htaccess重定向与动态变量冲突

时间:2011-03-22 23:42:45

标签: .htaccess dynamic redirect rewrite var

我正在使用一个旧的CMS,它使用htaccess将带有GET变量的URI重写为更友好的用户。

RewriteEngine on
RewriteRule ^animals/(.*)/ secondary.php?page=$1
RewriteRule ^animals/(.*) secondary.php?page=$1

结果(正确地)在

http://www.example.com/animals/duck

问题是我现在需要将其中一些页面重定向到新页面。我试过了:

Redirect 301 /animals/goose http://www.example.com/animals/fowl

重定向几乎可以正常工作,但它会在重写的URI末尾添加“?page = goose”:

http://www.example.com/animals/fowl?page=goose

我尝试过使用RewriteRule以及RewriteCond,但不幸的是我没有运气。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

尝试将其置于其他规则之前而不是Redirect语句。 R=301用于重定向,L表示相关规则是要处理的最后一条规则。

RewriteRule ^animals/goose /animals/fowl [R=301,L]

此外,您可以轻松地将斜杠(就像任何其他角色一样)带有问号,而不是有两个规则。

RewriteRule ^animals/(.*)/?$ secondary.php?page=$1