我試圖使用.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段的排列,這將使手動輸入每個可能的排列組成一項巨大的任務。
有什麼建議嗎?我正在努力做甚麼?
它看起來像你正在試圖完成這樣的事情:`RedirectRule^/。* - halogen-aircon-oil /([0-9] +)。* $ http://www.example.com/ $ 1-halogen-aircon-oil [R = 301,L]`這是一般格式嗎? – 2011-01-27 03:39:39
問題是第一部分有大約200個排列,其中大部分可能與第二部分無關。因此,與第一部分的匹配將不起作用,因爲它可以 - 對於所有意圖和目的 - 任何事情。 – 2011-01-27 07:13:46