301重定向所有获取请求

问题描述:

我需要重定向所有传入的请求获取。例如:site.com?anystrsite.com301重定向所有获取请求

我试图这样做

RedirectMatch /?(.*)$ site.com 

但它会导致循环转发,我也得到浏览器错误

+0

阅读[文档](http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch)。 RedirectMatch将不匹配查询字符串。您正将任何请求重定向到“http:// site.coom”。 – Sumurai8 2014-11-24 09:38:46

我相信这是你想要的帽子:

RewriteEngine on 
RewriteCond %{QUERY_STRING} .+ 
RewriteRule^/? [L,R=302] 

即与查询字符串的任何URL重定向查询字符串根剥去目标使用?

+0

如果我需要将'sitecom/news.html /?sasfs'重定向到我应该完成的'site.com/news.html'?我试过这个:'RewriteRule ^/news.html $ /news.html/? [L,R = 302]'但它不起作用 – engilexial 2014-11-24 10:15:53

+0

那将是:'RewriteRule ^(news \ .html)$/$ 1? [L,R = 302]'与上面的'RewriteCond'相同。 – anubhava 2014-11-24 10:17:21

+0

它在我添加一件事情时起作用。当我试过这个:'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]测试此按预期工作后。

+0

我得到了500个服务器错误 – engilexial 2014-11-24 09:49:21

+0

'RewriteEngine on RewriteCond%{QUERY_STRING}。+ RewriteRule^\?/[QSD,L,R = 301] ' – engilexial 2014-11-24 09:54:10

+0

你的Apache版本是什么? – Sumurai8 2014-11-24 10:58:23