RewriteRule重定向不包括参数

时间:2013-04-18 12:40:24

标签: apache .htaccess mod-rewrite

我想要做的是重定向

http://example.com/sample/

http://example.com/this/that/?which=those

这就是我的尝试;

RewriteRule ^sample.*$ http://example.com/this/that/?which=those [R=301,L]

但它没有参数重定向到http://example.com/this/that/

只有当我在网址后面写一些内容(随机)时,它才会正确重定向,包括参数。

我做错了什么?非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

您需要的只是这条规则:

RewriteRule ^sample/?$ /this/that/?which=those [R=302,L,NC,QSA]

在测试之前,请确保清除浏览器缓存并重新启动浏览器。

重要提示:请记住在测试mod_rewrite规则时不要使用R=301 (Permanent Redirect)。只有在您确认其有效后,才能将R=302 (Temporary Redirect)更改为R=301 (Permanent Redirect)

答案 1 :(得分:0)

将您的规则更改为:

RewriteRule ^sample(.*)? http://example.com/this/that/?which=those [R=301,L]

在这里,我们通过捕获它并使用可选的正则表达式标志来使通配符可选:(.*)?

因此,samplesample/test/hello都会重定向。