我是新的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
,由於某種原因,這些不工作。
謝謝。
我是新的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
,由於某種原因,這些不工作。
謝謝。
這裏設置的針對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]
正如你所看到的查詢字符串分別匹配的網頁名稱。所以..對於每個這樣的重定向你需要2行:RewriteCond & RewriteRule。
上述規則將做EXACT匹配,這意味着/group.asp?group=113¶m=value
不會被重定向,因爲查詢字符串是group=113¶m=value
,這不僅僅是group=113
。
能有這樣的重定向工作(當有查詢字符串一些可選參數),你必須修改它:RewriteCond %{QUERY_STRING} (^|&)group=113(&|$) [NC]
- 這將在查詢字符串(group=113
和group=11366
仍然不同,因此在這裏沒有任何問題)之間是否匹配group=133
。
這需要放在網站根文件夾中的.htaccess中。如果放置在其他地方,可能需要進行一些調整。
非常感謝@LazyOne – Martin
Redirect
指令(據我所知)只在路徑上匹配,而不是查詢字符串。相反,使用RewriteRule
。 QSA
指示重寫引擎將querystring附加到新的重定向URL上。
RewriteEngine On
RewriteRule ^test\.asp http://www.domain.com/test3.html [L,R=301,QSA]
嘿邁克爾和LazyOne 感謝您的答案,這是我所害怕的。 我有大約50個不同的querystrings需要301重定向到一個新的url。 LazyOne - 你寫我必須使用mod_rewrite - 我會嘗試googeling有關。 謝謝 – Martin
@Martin使用@之前用戶名,否則將不會通知您的評論。如果你想 - 我可以爲你提供這樣的重寫規則,但是你必須檢查你的服務器是否啓用了mod_rewrite(在大多數情況下)。 – LazyOne
@LazyOne好的@感謝@建議,我不知道,我是在寫這裏的新的stackoverflow,通常我可以在這裏找到一些其他線程的答案 - 它是一個金礦。 如果你能爲我提供這樣的服務,那可能很棒。只是爲了澄清我有2個不同的查詢字符串,如: group.asp?group = 113 and /product.asp?產品= 1107 應該啓用Mod重寫。 謝謝,我真的很感謝幫助。 – Martin
只是刪除查詢字符串,它將被不變地複製到新的URL(例如'redirect 301 /test.asp http:// www.domain.com/test3.html')。如果你只需要重定向特定的查詢字符串(例如,當Group = 100時重定向,但忽略其他值),那麼你必須使用mod_rewrite。 – LazyOne