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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 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 高手之路(三)
2006/10/09 PHP
php定时执行任务设置详解
2015/02/06 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
php格式文件打开的四种方法
2018/02/24 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
精读《Vue3.0 Function API》
2020/05/20 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
工程专业应届生求职信
2014/02/19 职场文书
《将心比心》教学反思
2014/04/08 职场文书
协议书范本
2014/04/23 职场文书
工会文体活动总结
2015/05/07 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫