301重定向,以及正确的正则表达式

时间:2010-06-14 13:07:37

标签: regex .htaccess redirect

我想要将几个网址重定向到同一个地方,但这些是动态网址。

结构是这样的:

http://www.mysite.com/declaration/list?[query_string]

我认为这种情况最理想的是在我的.htaccess文件中使用一些正则表达式将所有这些链接重定向到网站主页。

我想知道是否有人可以帮助我解决这种情况的正则表达式。到目前为止,我有这个,但它不起作用:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/declaration/list$ http://www.mysite.com/$ [R=301,L]

我的正则表达式至少可以说是弱点,我想要的东西,并且我正在努力学习。

提前致谢。 汤姆

1 个答案:

答案 0 :(得分:3)

由于您在.htaccess文件中使用mod_rewrite,因此需要从模式中删除上下文路径前缀。所以试试这个:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^declaration/list$ http://www.example.com/ [R=301,L]

由于.*将匹配任何字符串,因此您的RewriteCond指令无需额外使用:

RewriteRule ^declaration/list$ http://www.example.com/ [R=301,L]

如果您不希望将查询自动附加到新网址,请在替换中指定一个空查询:

RewriteRule ^declaration/list$ http://www.example.com/? [R=301,L]