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 define函数的使用说明
Aug 27 PHP
php 静态变量的初始化
Nov 15 PHP
PHP垃圾回收机制简单说明
Jul 22 PHP
php中用数组的方法设置cookies
Apr 21 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
php清除和销毁session的方法分析
Mar 19 PHP
php中JSON的使用方法
Apr 30 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
php fread函数使用方法总结
May 28 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 根据IP地址控制访问的代码
2010/04/22 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php的大小写敏感问题整理
2011/12/29 PHP
php微信开发自定义菜单
2016/08/27 PHP
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
python两个list[]相加的实现方法
2020/09/23 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
财务工作个人求职的自我评价
2013/12/19 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
工作自我评价怎么写
2014/01/29 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
学校远程教育工作总结
2015/08/11 职场文书