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

 更新时间:2015年12月12日 10:35:07   作者:jerrylsxu  
这篇文章主要介绍了Yii2隐藏frontend/web和backend/web的方法,需要的朋友可以参考下

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中Closure类的使用方法及详解

    PHP中Closure类的使用方法及详解

    Closure类又被大家称之为匿名函数,在php5.3的时候引入的。顾名思义匿名函数就是没有定义名字的函数。本篇文章给大家介绍php中Closure类的使用及详解,需要的朋友可以参考下
    2015-10-10
  • ThinkPHP表单令牌错误的相关解决方法分析

    ThinkPHP表单令牌错误的相关解决方法分析

    这篇文章主要介绍了ThinkPHP表单令牌错误的相关解决方法,分析了thinkPHP出现令牌错误的相关处理过程与解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • php反引号与短标签脚本示例

    php反引号与短标签脚本示例

    这篇文章主要为大家介绍了php反引号与短标签的脚本示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 一个经典的PHP验证码类分享

    一个经典的PHP验证码类分享

    这篇文章主要介绍了一个经典的PHP验证码类分享,本文不仅提供了类代码,还提供了使用例子及表单中使用的方法,需要的朋友可以参考下
    2014-11-11
  • 详解thinkphp5+swoole实现异步邮件群发(SMTP方式)

    详解thinkphp5+swoole实现异步邮件群发(SMTP方式)

    这篇文章主要介绍了详解thinkphp5+swoole实现异步邮件群发(SMTP方式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • laravel安装zend opcache加速器教程

    laravel安装zend opcache加速器教程

    这篇文章主要介绍了laravel安装end opcache加速器教程,需要的朋友可以参考下
    2015-03-03
  • PHP实现微信小程序在线支付功能(代码实例)

    PHP实现微信小程序在线支付功能(代码实例)

    这篇文章主要介绍了PHP微信小程序在线支付功能(代码实例),本文通过实例代码给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 跟我学Laravel之配置Laravel

    跟我学Laravel之配置Laravel

    所有关于Laravel框架的配置文件都存放在app/config目录里。所有文件里的配置选项都有说明文档,因此你可以轻松的查看这些文件,并熟悉这些配置项。
    2014-10-10
  • 给WordPress的编辑后台添加提示框的代码实例分享

    给WordPress的编辑后台添加提示框的代码实例分享

    这篇文章主要介绍了给WordPress的编辑后台添加提示框的代码实例分享,即制作一个鼠标指向后显示详细信息的效果,需要的朋友可以参考下
    2015-12-12
  • CodeIgniter使用smtp服务发送html邮件的方法

    CodeIgniter使用smtp服务发送html邮件的方法

    这篇文章主要介绍了CodeIgniter使用smtp服务发送html邮件的方法,涉及CodeIgniter中email类的使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论