2014-11-24 178 views
1

我需要重定向所有傳入的請求獲取。例如: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

回答

1

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

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

2

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