301重定向所有获取请求
我需要重定向所有传入的请求获取。例如:site.com?anystr
到site.com
301重定向所有获取请求
我试图这样做
RedirectMatch /?(.*)$ site.com
但它会导致循环转发,我也得到浏览器错误
我相信这是你想要的帽子:
RewriteEngine on
RewriteCond %{QUERY_STRING} .+
RewriteRule^/? [L,R=302]
即与查询字符串的任何URL重定向查询字符串根剥去目标使用?
。
如果我需要将'sitecom/news.html /?sasfs'重定向到我应该完成的'site.com/news.html'?我试过这个:'RewriteRule ^/news.html $ /news.html/? [L,R = 302]'但它不起作用 – engilexial 2014-11-24 10:15:53
那将是:'RewriteRule ^(news \ .html)$/$ 1? [L,R = 302]'与上面的'RewriteCond'相同。 – anubhava 2014-11-24 10:17:21
它在我添加一件事情时起作用。当我试过这个:'RewriteRule ^(。* \。html)$/$ 1? [L,R = 302]'和'RewriteRule^/? [L,R = 302]'只能工作一个 – engilexial 2014-11-24 10:23:48
RedirectMatch
不匹配后面的域名和查询字符串的事情之前。正则表达式/?(.*)$
将匹配任何请求。
您将需要使用mod_rewrite。在Apache的主配置文件中启用mod_rewrite并重新启动Apache。然后将以下添加到您的.htaccess文件:
RewriteEngine on
RewriteCond %{QUERY_STRING} .+
RewriteRule^- [QSD,R,L]
更改[R]
标志[R=301]
测试此按预期工作后。
我得到了500个服务器错误 – engilexial 2014-11-24 09:49:21
'RewriteEngine on RewriteCond%{QUERY_STRING}。+ RewriteRule^\?/[QSD,L,R = 301] ' – engilexial 2014-11-24 09:54:10
你的Apache版本是什么? – Sumurai8 2014-11-24 10:58:23
阅读[文档](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch)。 RedirectMatch将不匹配查询字符串。您正将任何请求重定向到“http:// site.coom”。 – Sumurai8 2014-11-24 09:38:46