2009-03-25 5 views
7

Einfache Frage. Gibt es eine Grenze, wie viele RewriteRules ich in meinem .htaccess haben kann, oder kann ich eine Zillion von ihnen hineinbringen, ohne dass Apache total auf mich losgeht?Wie viele RewriteRules können Sie in .htaccess ohne Probleme haben?

Gibt es eine relative Grenze, wo der Server einfach taucht, weil zu viele Regeln durchlaufen werden müssen?

Danke!

Antwort

3

Wenn Ihre RewriteRules mehrere vorhandene Dateien (-F) oder vorhandene URL-Flags (-U) enthalten, kann es zu Leistungseinbußen kommen, da es sich um Unteranforderungen handelt. Abgesehen davon habe ich keine Situation erlebt, in der mehrere RewriteRules die Leistung beeinträchtigen und meine aktuelle Implementierung einen guten Betrag hat.

Sie können die Notwendigkeit beschränken, alle RewriteRules zu durchlaufen, indem Sie sie nur so anordnen, dass die teureren Überprüfungen zu einem späteren Zeitpunkt im Prozess durchgeführt werden (so möglich), sodass frühere Conditionals ausschließen können Ihre Rewrite-Logik und speichern Sie später die Berechnung der teureren Regeln im Prozess.

6

Sie müssen wissen, dass die .htaccess configuration files are being processed on every request.

Wenn Sie eine .htaccess-Datei mit 1000 Regeln haben, ist der schlimmste Fall, dass alle 1000 Regeln jedes Mal getestet werden, wenn eine Anfrage dieses Verzeichnis erreicht.

Daher sollten Sie so früh wie möglich eine Struktur verwenden, in der eine Regel einer Anfrage entspricht. Regeln, die häufigere Anforderungen behandeln, sollten vor den weniger häufigen Anfragen erscheinen und die Verarbeitung bestimmen (siehe L flag). Lesen Sie über die ruleset processing, um zu wissen, wie die Regeln verarbeitet werden (siehe auch RewriteLogLevel direcitve).

Ein weiterer Faktor sind die regulären Ausdrücke: Besser "einfache" und effiziente reguläre Ausdrücke als mehrdeutige oder komplexe verwenden. Sie sollten untersuchen, wie reguläre Ausdrücke interpretiert und verarbeitet werden, um kostspielige zu vermeiden und das Beste daraus zu machen.