Die Empfehlung des Apache-Projekts lautet:
Im Allgemeinen sollten Sie .htaccess-Dateien nur verwenden, wenn Sie keinen Zugriff auf die Konfigurationsdatei des Hauptservers haben. ... ein häufiges Missverständnis ist, dass Benutzerauthentifizierungs- und mod_rewrite-Anweisungen in .htaccess
Dateien abgelegt werden müssen.
Also bitte sowohl set AllowOverride None
als auch all deine anderen Direktiven in der httpd.conf (und / oder den Unterabschnitten die du Include
)
Wenn Apache nicht mit AllowOverride None
Ihnen konfiguriert ist , treten bereits (geringfügige) Leistungseinbußen auf, unabhängig davon, ob .htaccess
Dateien verwendet werden oder nicht .
Dies liegt daran, dass Apache für jede einzelne Anforderung.htaccess
in jedem (Unter-) Verzeichnis, das zur angeforderten Ressource führt, auf das Vorhandensein einer potenziellen Datei prüfen muss . Wenn beispielsweise eine Datei aus einem Verzeichnis / www / htdocs / example angefordert wird, muss Apache nach den folgenden Dateien suchen:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Und so gibt es für jeden Dateizugriff aus diesem Verzeichnis 4 zusätzliche Dateisystemzugriffe, auch wenn keine dieser Dateien vorhanden ist. (Wenn AllowOveride für / eingestellt ist)
Der Systemaufruf, der für das ( man 2 stat
) alleine verwendet wird, ist nicht so teuer, und normalerweise wird der Dateisystem-Cache verwendet, anstatt die tatsächliche Festplatte abzufragen, wodurch die tatsächlichen E / A-Anforderungen begrenzt werden. Er kann sich jedoch summieren, wie in diesem Artikel dargelegt.
Wenn eine oder mehrere tatsächliche .htaccess
Dateien tatsächlich vorhanden sind, muss Apache sie weiterhin open
lesen (was eine weitere E / A-Leseoperation und normalerweise auch eine E / A-Schreiboperation zum Aktualisieren des Dateisystemattributs auslöst atime
) und analysieren , bevor die darin enthaltene Logik angewendet werden kann.
Im Gegensatz zu den Direktiven in der Hauptanwendung httpd.conf
, die nur einmal vom Apache analysiert werden müssen, muss beim Start jede .htaccess
Datei für jede einzelne Anforderung erneut interpretiert werden.
Wie teuer das Parsen der .htaccess-Dateien zusätzlich zu den E / A-Vorgängen ist, hängt von ihrer Komplexität ab.
Hierfür ist ein sorgfältiges Benchmarking erforderlich.