【问题标题】:Do 301 redirects in .htaccess need to be in a priority order?.htaccess 中的 301 重定向是否需要按优先顺序排列?
【发布时间】:2012-03-02 17:24:06
【问题描述】:

我有一个重新开发的网站,网址完全不同。我有数百个或 301 个要做(许多原始 URL 很长 - 我不知道为什么)并且我得到了一些有趣的结果,其中一些重定向正在发生,而另一些正在重定向,但重定向到奇怪的 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/”开头。这是我在实践中看到的。

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

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

    能否请您发布您的 .htaccess 文件?

    【讨论】:

    • 好东西 - 非常感谢您的回答。我没有意识到我在每条规则之后都需要 [L],这非常有意义。你可能已经意识到我对复杂的 .htaccess 写作很陌生。
    【解决方案2】:

    仅当有多个匹配行时,顺序才重要(例如,如果您还使用 RedirectMatch 或 mod_rewrite RewriteEngine On 可以与重定向指令交互。

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

    【讨论】:

    • 感谢您的帮助。由于新服务器上不存在文件夹本身,我想我需要实际创建它们,然后为每个文件夹添加 .htaccess。
    • 您可以简单地创建一个带有 .htaccess 的存根 News 目录。这意味着 90% 以上的 URI 中不包含 /News/ 路径的请求没有被重写引擎扫描这 100 条重写规则的命中
    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多