最新消息:把Logo换了一下,虽然丑了点,但至少完全是自己的设计

Yii2前后台启用UrlManager以及.htaccess的设置方法

PHP 宇托 3692浏览 3条评论

下载了Yii2 Advanced之后,启动一看,发现其默认是不启用UrlManager的。Url还是Get式的,想启用UrlManager,其设置方法如下。在\frontend\config\main.php文件和\backend\config\main.php文件的components里添加UrlMananger的信息就行。具体代码如下(我省去了不相关的内容)。

PHP
<?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文件如下(我省去了不相关的内容)

PHP
<?php
// ...
return [
    // ...
    'homeUrl' => '/',
    'components' => [
        'request' => [
            'baseUrl' => '',
        ],
        // ...
    ],
    // ...
];

2. 修改\backend\config\main.php文件

在Rutrun里添加homeUrl,在components里添加baseUrl。添加后main.php文件如下(我省去了不相关的内容)

PHP
<?php
// ...
return [
    // ...
    'homeUrl' => '/admin',
    'components' => [
        'request' => [
            'baseUrl' => '/admin',
        ],
        // ...
    ],
    // ...
];

3. 在Yii2的根目录下添加一个.htaccess文件,其内容如下:

Apache
# 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文件,其内容如下:

Apache
Options +FollowSymLinks
IndexIgnore /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

5. 在\backend\web下添加一个.htaccess文件,其内容如下:

Apache
# 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的目录来访问前台了。

转载请注明:宇托的狗窝 » Yii2前后台启用UrlManager以及.htaccess的设置方法

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 都不行的
    十年2015-10-09 19:04:47回复
    • 你用的是Apache的Web服务器吗?是不是安装了mod_rewrite了?如果没有安装的话,是不支持.htaccess里的Rewrite的。
      宇托2015-10-10 23:32:41回复