首页 > Yii2 > Yii2高级版实现伪静态和地址美化
2016
12-06

Yii2高级版实现伪静态和地址美化

环境:wamp

美化前:

前台:http://www.yiitest.dev/frontend/web/
后台:http://www.yiitest.dev/bakcend/web/ 
其他:http://www.yiitest.dev/api/web/

美化后:

前台:http://www.yiitest.dev/
后台:http://www.yiitest.dev/bakcend/ 
其他:http://www.yiitest.dev/api/

实现方法如下:

1、在网站要目录添加.htaccess文件,内容如下:

Options -Indexes

<IfModule mod_rewrite.c> 
  RewriteEngine on
  
  #如果请求目标不是backend或api(可以有多行), 则转到/frontend/web
  RewriteCond %{REQUEST_URI} !^/backend
  RewriteCond %{REQUEST_URI} !^/api
  
  #首页
  RewriteRule ^(.*)$ frontend/web/$1 [L]

  #其他
  RewriteRule ^backend/(.*)$ backend/web/$1 [L]  
  RewriteRule ^api/(.*)$ api/web/$1 [L]
  
</IfModule>

#禁止访问以下扩展名的文件
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>

#禁止访问小数点文件
RewriteRule (^\.|/\.) - [F]

2、在/frontend/web/里创建.htaccess文件,内容如下:

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

3、复制上述/frontend/web/里的.htaccess分别到/backend/web/和/api/web/里。

4、修改\frontend\config\main.php这个文件,在components里添加以下内容(注意是components里面):

'request' => [
    'baseUrl' => '/',
],
'urlManager' => [
    'baseUrl' => '/',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '/' => '/site/index',
    ],
],

5、修改\backend\config\main.php这个文件,在components里添加以下内容(注意是components里面):

'request' => [
    'baseUrl' => '/backend',
],
'urlManager' => [
    'baseUrl' => '/backend',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '/' => 'site/index',
        'login' => 'site/login',
    ],
],

6、修改\api\config\main.php这个文件,在components里添加以下内容(注意是components里面):

'request' => [
    'baseUrl' => '/api',
],
'urlManager' => [
    'baseUrl' => '/api',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '/' => 'site/index',
    ],
],

7、Yii2高级版实现伪静态和地址美化完成了。


留下一个回复

你的email不会被公开。