我在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经验的人想要插话,我可能实际上也误解了我当前的重定向。
答案 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有一个功能,为什么不使用它呢?希望如果没有我的疑问,请告诉我。