htaccess:重定向带有问号的链接结束

时间:2014-03-24 03:35:37

标签: .htaccess

我有一些看起来像这样的链接,不幸的是正在使用它们:

http://www.example.com/page/?
http://www.example.com/another-page/??

是否可以让它们在没有问号的情况下重定向,或将它们剥离出来?

我试过了:

RewriteRule /page/? http://example.com/page/ [R=301,L]
RewriteRule /page/\? http://example.com/page/ [R=301,L]
RewriteRule ^/page/\? http://example.com/page/ [R=301,L]
RewriteRule ^/page/\?$ http://example.com/page/ [R=301,L]
Redirect 301 /page/? http://example.com/page/

1 个答案:

答案 0 :(得分:0)

您无法在重写规则中与查询字符串(甚至是?)匹配。由于查询字符串本身为空,因此您甚至无法匹配变量%{QUERY_STRING}。您需要做的是与实际请求匹配:

RewriteCond %{THE_REQUEST} \ /+([^\ \?]+)\?(\ |$)
RewriteRule ^(.*)$ /$1? [L,R=301]

在规则的目标末尾使用?看起来很奇怪,但这就是告诉mod_rewrite 删除查询字符串的方式