.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没有太多关系。