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

时间:2009-03-25 14:25:59

标签: apache .htaccess mod-rewrite limit

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

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

谢谢!

2 个答案:

答案 0 :(得分:6)

您必须知道.htaccess configuration files are being processed on every request

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

因此,您应该尽早使用规则与请求匹配的结构。处理更频繁请求的规则应出现在较不频繁的请求之前,并确定处理(请参阅L flag)。阅读ruleset processing以了解规则的处理方式(另请参阅RewriteLogLevel direcitve)。

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

答案 1 :(得分:3)

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

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