Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess中的301重定向是否需要按优先级排序?_.htaccess_Redirect - Fatal编程技术网

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

.htaccess htaccess中的301重定向是否需要按优先级排序?,.htaccess,redirect,.htaccess,Redirect,我有一个网站已经重新开发和网址是完全不同的。我有数百或301要做(原来的网址很多都很长-我不知道为什么),我得到一些有趣的结果,其中一些重定向正在发生,其他重定向,但奇怪的网址。我想知道301号订单是否有特别的需求。例如: redirect 301 /News/Smart-Site-Waste-Management.aspx http://... redirect 301 /News/tabid/96/tagid/68/damaged-doors.aspx http://... redirect

我有一个网站已经重新开发和网址是完全不同的。我有数百或301要做(原来的网址很多都很长-我不知道为什么),我得到一些有趣的结果,其中一些重定向正在发生,其他重定向,但奇怪的网址。我想知道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)是否应该按此顺序降低,而更具体的URL是否应该更高?我的直觉告诉我,如果设置如上所述,所有这些URL都将指向第一个URL中指定的新链接,因为它们都以“News/”开头。这就是我在实践中看到的。

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


您可以发布您的.htaccess文件吗?

只有在有多个匹配行时(例如,如果您也在使用
重定向匹配
上的mod_rewrite
RewriteEngine,它可以与重定向指令交互),顺序才是重要的


在解析htaccess文件中的100条规则时,您会遇到性能问题,尤其是在匹配率现在很小的情况下。如果您当前的URI不是以/News开头的,那么一个好办法是将所有这些重定向移动到
DOCROOT/News/.htaccess
,因为这只会被解析为URI/News/…并因此脱离任何其他URI路径

很棒的东西-非常感谢你的回答。我没有意识到我需要[L]在每一条规则都非常合理之后。你可能已经意识到我对复杂的.htaccess编写非常陌生。谢谢你的帮助。由于新服务器上不存在文件夹本身,我想我需要实际创建它们,然后为每个文件夹添加.htaccess。你只需创建一个包含.htaccess的存根新闻目录。这意味着什么在URI中不包含/News/path的90%以上的请求没有重写引擎扫描这100条重写规则的命中率