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和ACCESS写聊天室(八)
Oct 09 PHP
PHP应用JSON技巧讲解
Feb 03 PHP
PHP引用符&amp;的用法详细解析
Aug 22 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 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设计模式之命令模式的应用详解
2013/05/21 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
Python读取word文本操作详解
2018/01/22 Python
python字符串循环左移
2019/03/08 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
python中怎么表示空值
2020/06/19 Python
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
九年级语文教学反思
2014/02/04 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
村班子对照检查材料
2014/08/18 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
演讲开场白台词大全
2015/05/29 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js