2011-07-18 89 views
0

我是新的301重定向通過.htacces。301重定向問題 - 與?和=

我可以簡單的重新定位爲

redirect 301 /test.html http://www.domain.com/test2.html 

工作,但我有一些網址,這樣

redirect 301 /test.asp?Group=100 http://www.domain.com/test3.html 

,由於某種原因,這些不工作。

謝謝。

+0

只是刪除查詢字符串,它將被不變地複製到新的URL(例如'redirect 301 /test.asp http:// www.domain.com/test3.html')。如果你只需要重定向特定的查詢字符串(例如,當Group = 100時重定向,但忽略其他值),那麼你必須使用mod_rewrite。 – LazyOne

回答

0

這裏設置的針對URL規則您提供:

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} =group=113 [NC] 
RewriteRule ^group\.asp$ http://domain.dk/til-born.htm? [NC,R=301,L] 

RewriteCond %{QUERY_STRING} =product=1136 [NC] 
RewriteRule ^product\.asp$ http://www.domain.dk/til-born/bukser.html? [NC,R=301,L] 
  1. 正如你所看到的查詢字符串分別匹配的網頁名稱。所以..對於每個這樣的重定向你需要2行:RewriteCond & RewriteRule。

  2. 上述規則將做EXACT匹配,這意味着/group.asp?group=113&param=value不會被重定向,因爲查詢字符串是group=113&param=value,這不僅僅是group=113

    能有這樣的重定向工作(當有查詢字符串一些可選參數),你必須修改它:RewriteCond %{QUERY_STRING} (^|&)group=113(&|$) [NC] - 這將在查詢字符串(group=113group=11366仍然不同,因此在這裏沒有任何問題)之間是否匹配group=133

  3. 這需要放在網站根文件夾中的.htaccess中。如果放置在其他地方,可能需要進行一些調整。

+0

非常感謝@LazyOne – Martin

0

Redirect指令(據我所知)只在路徑上匹配,而不是查詢字符串。相反,使用RewriteRuleQSA指示重寫引擎將querystring附加到新的重定向URL上。

RewriteEngine On 
RewriteRule ^test\.asp http://www.domain.com/test3.html [L,R=301,QSA] 
+0

嘿邁克爾和LazyOne 感謝您的答案,這是我所害怕的。 我有大約50個不同的querystrings需要301重定向到一個新的url。 LazyOne - 你寫我必須使用mod_rewrite - 我會嘗試googeling有關。 謝謝 – Martin

+0

@Martin使用@之前用戶名,否則將不會通知您的評論。如果你想 - 我可以爲你提供這樣的重寫規則,但是你必須檢查你的服務器是否啓用了mod_rewrite(在大多數情況下)。 – LazyOne

+0

@LazyOne好的@感謝@建議,我不知道,我是在寫這裏的新的stackoverflow,通常我可以在這裏找到一些其他線程的答案 - 它是一個金礦。 如果你能爲我提供這樣的服務,那可能很棒。只是爲了澄清我有2個不同的查詢字符串,如: group.asp?group = 113 and /product.asp?產品= 1107 應該啓用Mod重寫。 謝謝,我真的很感謝幫助。 – Martin