2011-08-16 33 views
1

我有一個來自舊網站結構的長列表,我需要使用RedirectMatch重定向到同一個域上的新網址。訣竅是舊的(源)URL包含一堆亂七八糟的變量。這不是問題,對吧?我只是放置了一些可愛的小Regexp語句來處理這些變量。這就是我所做的,它正確地匹配變量。甜!Regexp/htaccess重寫樂趣

問題伴隨着RedirectMatch語句的第二部分 - 目標。除舊舊變量附加到新網址之外,RedirectMatch正確地將舊網址解析爲新網址。我想保留重定向,但目標網址不包含變量。這裏是我的代碼:

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html 

實際重定向URL:

http://www.website.com/garage.html?launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can 

任何人都可以點我,我做錯了什麼在這裏?我只是想擺脫那些糟糕的舊變量,並開始新鮮。

回答

1

如果「變量」你的意思是查詢字符串(連結網址範例的launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can部分),然後使用這個重定向規則:

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html? 

唯一的區別 - ?在新網址的結尾。這會阻止舊的查詢字符串被複制,因爲我們告訴Apache新的URL將具有此空的查詢字符串。


如果你可以使用mod_rewrite的,這裏是規則:

# Activate Rewrite Engine 
Options +FollowSymLinks 
RewriteEngine On 

# the rewrite rule 
RewriteRule ^Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html? [R=301,L] 

這無疑將與空的查詢字符串重定向。

+0

是的,自從這篇文章我在進行的研究中發現了這個問題,並且給了它一個旋轉。結果是額外的「?」只是追加到變量的開頭,例如:http://www.website.com/garage.html??launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can –

+0

@Tela - 我不知道你做了什麼 - 但不應該那樣工作。我提供的代碼工作率達到100% - 我運行了幾個使用類似代碼的網站,而Apache 2.2.17沒有任何問題。 – LazyOne

+0

@Tela我添加了mod_rewrite支持的重定向規則,它可以完成同樣的工作。 – LazyOne