我有一些看起来像这样的链接,不幸的是正在使用它们:
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/
答案 0 :(得分:0)
您无法在重写规则中与查询字符串(甚至是?
)匹配。由于查询字符串本身为空,因此您甚至无法匹配变量%{QUERY_STRING}
。您需要做的是与实际请求匹配:
RewriteCond %{THE_REQUEST} \ /+([^\ \?]+)\?(\ |$)
RewriteRule ^(.*)$ /$1? [L,R=301]
在规则的目标末尾使用?
看起来很奇怪,但这就是告诉mod_rewrite 删除查询字符串的方式