下载了Yii2 Advanced之后,启动一看,发现其默认是不启用UrlManager的。Url还是Get式的,想启用UrlManager,其设置方法如下。在\frontend\config\main.php文件和\backend\config\main.php文件的components里添加UrlMananger的信息就行。具体代码如下(我省去了不相关的内容)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // ... return [ // ... 'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], // ... ], // ... ]; |
启用之后,可以使用UrlReWrite功能了。但地址还是以frontend/web/site/about这种形式显示的,我觉得前台最好是什么都不加,后台加admin就行。我希望的Url形式是这样的。
前台:site/about
后台:admin/site/about
在网上找了一堆资料,发现是完全可以实现的。方法大体是修改设置文件添加homeUrl和baseUrl属性,然后再修改.htaccess文件。设置方法如下:
1. 修改\frontend\config\main.php文件。
在Rutrun里添加homeUrl,在components里添加baseUrl。添加后main.php文件如下(我省去了不相关的内容)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // ... return [ // ... 'homeUrl' => '/', 'components' => [ 'request' => [ 'baseUrl' => '', ], // ... ], // ... ]; |
2. 修改\backend\config\main.php文件。
在Rutrun里添加homeUrl,在components里添加baseUrl。添加后main.php文件如下(我省去了不相关的内容)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // ... return [ // ... 'homeUrl' => '/admin', 'components' => [ 'request' => [ 'baseUrl' => '/admin', ], // ... ], // ... ]; |
3. 在Yii2的根目录下添加一个.htaccess文件,其内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
# prevent directory listings Options -Indexes # follow symbolic links Options FollowSymlinks RewriteEngine on RewriteCond %{REQUEST_URI} ^/admin/$ RewriteRule ^(admin)/$ /$1 [R=301,L] RewriteCond %{REQUEST_URI} ^/admin RewriteRule ^admin(/.+)?$ /backend/web/$1 [L,PT] RewriteCond %{REQUEST_URI} ^.*$ RewriteRule ^(.*)$ /frontend/web/$1 |
4. 在\frontend\web下添加一个.htaccess文件,其内容如下:
1 2 3 4 5 6 |
Options +FollowSymLinks IndexIgnore / RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php |
5. 在\backend\web下添加一个.htaccess文件,其内容如下:
1 2 3 4 5 6 7 |
# use mod_rewrite for pretty URL support RewriteEngine on # if a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward the request to index.php RewriteRule . index.php |
到这里为止,你就可以用admin来访问后台,用不带admin的目录来访问前台了。