7 条
LOGO
Yutuo

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

<?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
// ...
return [
    // ...
    'homeUrl' => '/',
    'components' => [
        'request' => [
            'baseUrl' => '',
        ],
        // ...
    ],
    // ...
];

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

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

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

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

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

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

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

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

发表我的评论

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

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

网友最新评论(7)

  1. yyt

    怎么设置的 我的一直失败

  2. 我的设置成功了,apache环境。

    1. yyt

      834659546@qq.com 求解答

      1. 宇托

        你的Apache设置了UrlReWrite了吗?
        如果设置了,应该没有问题的

  3. 十年
    1. 宇托

      你用的是Apache的Web服务器吗?是不是安装了mod_rewrite了?如果没有安装的话,是不支持.htaccess里的Rewrite的。

      1. 123

        支持,只是隐藏了