.htaccess 如何重定向旧查询字符串?
我有这些旧网址:.htaccess 如何重定向旧查询字符串?,.htaccess,yii,.htaccess,Yii,我有这些旧网址: /site/index?cat=likes&top=today /site/index?cat=likes&top=month /tag/TagName/index?cat=likes&top=today 我将cat=likes更改为cat=popular 现在我得到了404。如何将所有呼叫从cat=喜欢重定向到cat=受欢迎 注意:我已经有了美化URL的重定向 /site/index?cat=popular&top=today 已重定向到 /popu
/site/index?cat=likes&top=today
/site/index?cat=likes&top=month
/tag/TagName/index?cat=likes&top=today
我将cat=likes
更改为cat=popular
现在我得到了404。如何将所有呼叫从cat=喜欢重定向到cat=受欢迎
注意:我已经有了美化URL的重定向
/site/index?cat=popular&top=today
已重定向到
/popular today
检查GET变量cat
是否设置了值'likes',您可以在站点/索引
或标记名
中进行检查。之后,可以使用PHP的header()
重定向。大概是这样的:
public function actionIndex()
{
if ($_GET['cat'] == 'likes')
{
header('Location: /site/index?cat=popular', false, 301);
}
...
}
你也可以使用你的美化网址
public function actionIndex()
{
if ($_GET['cat'] == 'likes')
{
header('Location: /popular-today', false, 301);
}
...
}
如果您认为这是一个Yii问题,那么应该添加url规则的relevance部分。如果没有,您应该删除Yii标记。我当前在.htaccess中有此条目,并且工作正常:
RedirectMatch 301/tag/(*))/likes-(今天|周|月|年)/tag/$1/popular-$2 RedirectMatch 301/tag/(*)/likes-(new all)/tag/$1/new RedirectMatch 301/tag/(*)/likes-30/tag/$1/popular month redmatch 301/likes-(今天|周|月|年)/popular-$1
我相信你的建议会起作用,但我正在寻找一种更干净的方法,在代码之外这样做。因此我想知道正确的.htaccess条目来重定向那些有问题的查询字符串。这可能确实是一个更好的解决方案,尽管它与Yii没有太多关系。