2011-01-27 110 views
0

我試圖使用.htaccess創建一些301重定向,以修復Google遇到的一些Crawler錯誤。 Google正在使用我的部分網址的舊版本,當蜘蛛嘗試訪問傳統路徑時會導致錯誤發生。這些遺留的URL包含空格,並且其中有許多都顯示在URL字符串中的不同位置。例如,URL可能看起來像這樣:.htaccess 301使用RedirecMatch或RewriteRule重定向

http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil 

這些URL不必要長,特別是因爲他們最終都顯示相同的內容。他們現在已經縮短到這樣的事情:

http://www.example.com/773-halogen-aircon-oil 

從字面上有過的這1000個,但只有6個排列的URL的末尾,所以我想我可以很容易地使用任何RedirectMatch或重寫規則,以匹配是否存在這6個排列中的一個並重定向到適當的新URL。我曾嘗試以下:

RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil 

還有:

RewriteEngine On 
RewriteBase/
RewriteRule .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil [R=301,L] 

這些不工作。我嘗試了很多不同的選擇,包括用\代替正則表達式字符類,將正則表達式的開頭改爲^。* /?773和其他許多東西,但沒有任何效果。

我已經使用了http://www.regular-expressions.info/javascriptexample.html的正則表達式測試功能,它報告我的正則表達式是有效的,並生成與我期望的URL匹配的內容,但.htaccess並沒有像我期望的那樣重定向。

我可以用一個簡單的重定向如下:

Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil 

這工作,但它是有問題的,因爲它相匹配,只有當汽車套件鹵素 - 空調 - 油的存在,並有可能是200該URI段的排列,這將使手動輸入每個可能的排列組成一項巨大的任務。

有什麼建議嗎?我正在努力做甚麼?

+0

它看起來像你正在試圖完成這樣的事情:`RedirectRule^/。* - halogen-aircon-oil /([0-9] +)。* $ http://www.example.com/ $ 1-halogen-aircon-oil [R = 301,L]`這是一般格式嗎? – 2011-01-27 03:39:39

+0

問題是第一部分有大約200個排列,其中大部分可能與第二部分無關。因此,與第一部分的匹配將不起作用,因爲它可以 - 對於所有意圖和目的 - 任何事情。 – 2011-01-27 07:13:46

回答

0

你正在嘗試的規則似乎有點複雜,最好有更多的例子。

RewriteEngine on 
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L] 

應該做的工作。