你可以在.htaccess中有多少RewriteRules而没有麻烦?

Wil*_*lem 7 apache .htaccess mod-rewrite limit

简单的问题.我的.htaccess中可以有多少RewriteRules是否有限制,或者我可以将其中的大量RewriteRules放在那里,而Apache不会对我产生任何问题?

是否存在服务器简单潜水的相对限制因为需要迭代的许多规则?

谢谢!

Gum*_*mbo 6

您必须知道每个请求都正在处理.htaccess配置文件.

因此,如果您有一个包含1000条规则的.htaccess文件,最糟糕的情况是每次请求到达此目录时都会测试每1000条规则.

因此,您应该尽可能使用规则与请求匹配的结构.处理更频繁请求的规则应出现在较不频繁的请求之前,并确定处理(请参阅Lflag).阅读规则集处理以了解规则的处理方式(另请参见RewriteLogLeveldirecitve).

另一个因素是正则表达式:更好地使用"简单"和有效的正则表达式而不是模糊或复杂的正则表达式.您应该研究正则表达式的解释和处理方式,以避免代价高昂的表达式并充分利用它们.


Kyl*_*lsh 3

如果您的 RewriteRules 包含多个现有文件 (-F) 或现有 url (-U) 标志,因为这些是子请求,您可能会看到性能下降。除此之外,我还没有遇到过几个 RewriteRules 开始对性能产生不利影响的情况,并且我当前的实现有很大的影响。

您可以限制迭代所有 RewriteRules 的需要,只需以这样的方式排序它们,即稍后在流程中完成更昂贵的检查(如果可能),这样早期的条件可以使您的重写逻辑短路,并且为您节省稍后过程中更昂贵的规则的计算。