.htaccess中的301重定向是否需要按优先级顺序排列?

时间:2012-03-02 17:24:07

标签: .htaccess redirect

我有一个已重新开发的网站,网址完全不同。我有数百或301要做(原始网址很多很长 - 我不知道为什么)我得到一些有趣的结果,其中一些重定向正在发生,其他重定向,但奇怪的URL。我想知道是否有特定订单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将指向FIRST中指定的新链接,因为它们都以“News /”开头。这就是我在实践中看到的。

2 个答案:

答案 0 :(得分:5)

您需要将最具体的位置放在顶部,将最不具体的位置放在底部。此外,请确保在每个重定向规则之后使用[L]暂停处理,以确保apache在找到匹配的规则后不会处理其他重写规则。

您可以发布.htaccess文件吗?

答案 1 :(得分:0)

只有在存在多个匹配行时(例如,如果您还使用RedirectMatch或mod_rewrite RewriteEngine On可以与重定向指令进行交互,则顺序非常重要。

在htaccess文件中解析100条规则会遇到性能损失,特别是如果匹配率现在很小的话。如果您当前的URI不以/ News开头,那么一个好方法是将所有这些重定向移到DOCROOT/News/.htaccess,因为这只会针对URI / News / ....进行解析,因此不会出现任何其他URI路径。