Yii2隐藏frontend/web和backend/web的方法


Posted in PHP onDecember 12, 2015

Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 `易`)在中文里有 “极致简单与不断演变” 两重含义,也可看作 **Yes It Is**! 的缩写。

Create .htaccess file in root folder, i.e advanced/.htaccess and write below code.

Options +FollowSymlinks
RewriteEngine On
# deal with admin first
RewriteCond %{REQUEST_URI} ^/(admin) <------
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ <------
RewriteCond %{REQUEST_URI} ^/(admin) <------
RewriteRule ^.*$ backend/web/index.php [L]
RewriteCond %{REQUEST_URI} ^/(assets|css) <------
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ <------
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

Note : if you are trying in local server then replace ^/ with ^/project_name/ where you see arrow sign. Remove those arrow sign <------ after setup is done.
Now create a components/Request.php file in common directory and write below code in this file.

namespace common\components;
class Request extends \yii\web\Request {
  public $web;
  public $adminUrl;
  public function getBaseUrl(){
    return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
  }
  /*
    If you don't have this function, the admin site will 404 if you leave off 
    the trailing slash.
    E.g.:
    Wouldn't work:
    site.com/admin
    Would work:
    site.com/admin/
    Using this function, both will work.
  */
  public function resolvePathInfo(){
    if($this->getUrl() === $this->adminUrl){
      return "";
    }else{
      return parent::resolvePathInfo();
    }
  }
}

Installing component. Write below code in frontend/config/main.php and backend/config/main.phpfiles respectively.

//frontend, under components array
'request'=>[
  'class' => 'common\components\Request',
  'web'=> '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],
// backend, under components array
'request'=>[
  'class' => 'common\components\Request',
  'web'=> '/backend/web',
  'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],

create .htaccess file in web directory

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L]

Note: make sure you have enabled your mod rewrite in apache
Thats it! You can try your project with

www.project.com/admin, www.project.com

in local server

localhost/project_name/admin, localhost/project_name

以上是高级版的Advanced配置方法,基础版的不需要这样配置。

Advanced和 basic 最大的区别就是分离了前后台 分别是 backend目录和frontend目录 这两个目录实际相对于 basic 来说其实就是两个Yii应用 他们公用的比如Model部分都存放在Common目录 这种高级应用适用于比较复杂大型的项目用于彻底分离开前后台业务逻辑 因此访问前后台就相当于访问两个不同的应用
因此在配置Vhost webroot 目录的时候 假设域名为 www.xxx.com 那么 www.xxx.com指向前台目录 /frontend/web/
配置二级域名root.xxx.com 指向/backend/web/

以上所述是小编给大家分享的Yii2隐藏frontend/web和backend/web的方法,希望大家喜欢。

PHP 相关文章推荐
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
php session和cookie使用说明
Apr 07 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 #PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 #PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 #PHP
PHP开发中AJAX技术的简单应用
Dec 11 #PHP
基于PHP如何把汉字转化为拼音
Dec 11 #PHP
PHP异常处理Exception类
Dec 11 #PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 #PHP
You might like
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
python将unicode转为str的方法
2017/06/21 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
Python列表list排列组合操作示例
2018/12/18 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
销售团队口号大全
2014/06/06 职场文书
大学生求职信例文
2014/06/29 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
超市采购员岗位职责
2015/04/07 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
开学第一天的感想
2015/08/10 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
《比的意义》教学反思
2016/02/18 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
python爬虫selenium模块详解
2021/03/30 Python