2012-03-02 74 views
4

我有一個網站已經重新開發,網址完全不同。我有數百個或301個要做(原始網址很多很長 - 我不知道爲什麼),我得到了一些有趣的結果,其中一些重定向正在發生,另一些重定向,但奇怪的URL。我在想,如果有一個特定的順序301的需求中去,例如:.htaccess中的301重定向是否需要優先順序?

redirect 301 /News/Smart-Site-Waste-Management.aspx http://... 
redirect 301 /News/tabid/96/tagid/68/damaged-doors.aspx http://... 
redirect 301 /News/tabid/96/EntryId/91/Smart-Site-Waste-Management.aspx http://... 
redirect 301 /News/tabid/96/EntryId/156/Plastic-Surgeon-hits-the-headlines.aspx http://... 
redirect 301 /News/RepairoftheWeek/tabid/194/tagid/78/Gallery/RepairoftheWeek/tabid/194/EntryId/221/Scratched-laminate-floor-repair.aspx http://... 

所以我實際的問題是,應在「較小」的網址(那些與目錄水平以下)是向下的順序下而更具體的URL會更高?我的直覺告訴我,如果它如上設置,那麼所有這些URL將直接指向FIRST中指定的新鏈接,因爲它們都以「News /」開頭。這是我在實踐中看到的。

回答

3

您需要將最具體的最上面和最不特定的最底部。此外,確保在每個重定向規則之後使用[L]停止處理,以確保apache在找到匹配的規則後不會處理其他重寫規則。

您能否發佈您的.htaccess文件?如果有多個匹配行(例如,如果您還使用RedirectMatch或mod_rewrite的RewriteEngine On可與重定向指令互動

+0

偉大的東西 - 非常感謝您的答案。我沒有意識到我需要[L]後每個規則,使完美的感覺。你可能已經意識到我對複雜的.htaccess寫作很新穎。 – user1245615 2012-03-05 09:53:23

0

順序是唯一重要的。

您會遇到性能打了一個htaccess解析規則的100S文件,尤其是如果匹配率現在很小如果你的當前URI不是以/ News開始,那麼一個好的技巧就是將所有這些重定向移動到DOCROOT/News/.htaccess,因爲這隻會被解析爲URIs/News/....並因此超出任何其他URI路徑

+0

感謝您的幫助。由於這些文件夾本身並不存在於新服務器上,我想我需要實際創建它們,然後爲每個服務器添加.htaccess。 – user1245615 2012-03-05 09:55:28

+0

您可以簡單地使用其中的.htaccess創建一個存根新聞目錄。這意味着,在URI中不包含/ News /路徑的90%以上的請求沒有重寫引擎掃描這些重寫規則的100次 – TerryE 2012-03-05 11:38:31