简单的问题。我可以在我的 .htaccess 中拥有多少 RewriteRules 是否有限制,或者我可以在其中放置无数个 RewriteRules,而 Apache 不会对我造成任何影响?
服务器是否存在相对限制,因为有很多规则需要迭代?
谢谢!
简单的问题。我可以在我的 .htaccess 中拥有多少 RewriteRules 是否有限制,或者我可以在其中放置无数个 RewriteRules,而 Apache 不会对我造成任何影响?
服务器是否存在相对限制,因为有很多规则需要迭代?
谢谢!
您必须知道每个请求都在处理 .htaccess 配置文件。
因此,如果您有一个包含 1000 条规则的 .htaccess 文件,最坏的情况是每次请求到达此目录时都会测试每 1000 条规则。
因此,您应该尽可能早地使用规则匹配请求的结构。处理更频繁请求的规则应该出现在那些不太频繁的请求之前并确定处理(参见L
flag)。阅读规则集处理以了解如何处理规则(另请参见RewriteLogLevel
指令)。
另一个因素是正则表达式:比模棱两可或复杂的正则表达式更好地使用“简单”和高效的正则表达式。您应该研究如何解释和处理正则表达式,以避免代价高昂并充分利用它们。
如果您的 RewriteRules 包含多个现有文件 (-F) 或现有 url (-U) 标志,因为这些是子请求,您可能会看到性能下降。除此之外,我还没有遇到过几个 RewriteRules 开始对性能产生不利影响的情况,而我当前的实现有很多。
您可以限制遍历所有 RewriteRules 的需要,只需以这样的方式对它们进行排序,以便在流程的后期(如果可能)进行更昂贵的检查,这样更早的条件可能会使您的重写逻辑短路,并且为您节省在此过程中稍后计算更昂贵规则的时间。