将htacess重定向添加到单个Yii2控制器

时间:2017-03-27 21:22:14

标签: php .htaccess redirect yii yii2

我在Yii2 PHP站点上有两个控制器。第一个是SiteController。第二个是BlogController。我有这个现有的重定向设置。

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 ^.*$ frontend/web/index.php

这很有效,并且网址重定向如下:

/site/about重定向到/frontend/web/index.php/site/about

我现在正尝试设置行为来重定向我的博文。

目前,这些帖子在/blog/view?slug=SLUG处可见。我希望它们在/blog/SLUG处可见。我希望/blog重定向到/blog/index

我对正则表达式和htaccess重写很糟糕。我尝试过任意数量的衍生品,但我无法正确地重定向网址。

/blog/test应重定向到/frontend/web/index.php/blog/view?slug=test/blog//blog应重定向到/frontend/web/index.php/blog/index

有人可以帮忙吗?我最近的(失败的)尝试是:

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

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

RewriteRule ^blog/(.*)$ frontend/web/index.php/blog/view?slug=%1

# otherwise forward it to index.php
RewriteRule ^.*$ frontend/web/index.php

如果有Yii2经验的人想要插话,我可能实际上也误解了我当前的重定向。

1 个答案:

答案 0 :(得分:1)

为什么不在Yii2中使用规则。可以在config prettyURL中设置

       'urlManager' => [
    'showScriptName' => false,
    'enablePrettyUrl' => true,
    'rules' => array(
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' =>          '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
]

],

这比更改你的htaccess文件更好,因为如果Yii2有一个功能,为什么不使用它呢?希望如果没有我的疑问,请告诉我。