
Wie und wo platziere ich meine mod_rewrite-Regeln in der httpd-Konfiguration, sodass sie nur einmal beim Start analysiert werden und nicht jedes Mal, wenn eine Datei in meinem Webverzeichnis gelesen wird?
Zusätzliche Information:
- vorausgesetzt, alle Skripte funktionieren in der .htaccess-Datei
- RHEL4 mit Apache 2.0.52
- mehrere Subdomains auf der Maschine
Danke
Antwort1
Ich bin nicht sicher, ob ich die Frage verstanden habe, aber wenn die Frage lautet: „Ich habe derzeit eine Umschreiberegel in einer .htaccess-Datei und möchte sie in die gesamte Apache-Konfiguration einfügen“, müssen Sie eine <Directory /path/to/directory/where/htaccess/is>
Direktive in die Apache-Konfiguration einfügen und den Inhalt der .htaccess-Datei dort einfügen.
Wenn sich .htaccess in /srv/web/site1/folder1/ befindet, fügen Sie Folgendes in die Apache-Konfigurationsdatei ein
<Directory /srv/web/site1/folder1>
Paste content of .htaccess here
</Directory>
Antwort2
Die Antworten sind alle hier - sie sind nur nicht alle gebündelt.
Wie memnoch_proxy angibt:
„Regeln, die in .htaccess-Dateien geändert werden, werden bei jeder Anfrage gelesen. /etc/httpd/httpd.conf und /etc/httpd/conf.d/* werden nicht gelesen. Ich löse neue Änderungen an diesen Dateien mithilfe des Dienstes httpd reload aus, der ein SIGUSR1 an die Worker sendet, um einen ordnungsgemäßen Neustart durchzuführen.“
Für mich klingt es also so, als würden Sie .htaccess-Dateien verwenden, um Ihre Umschreibregeln zu definieren, die für Ihre Site und/oder Ordnerstruktur gelten.
Um zu verhindern, dass die Regeln bei jedem Zugriff auf das Verzeichnis oder die Seite erneut gelesen und interpretiert werden, müssen die Regeln in den zentralen Apache-Konfigurationsdateien für Ihre Website platziert werden.
Der Speicherort dieser Regeln hängt davon ab, wie der Systemadministrator das System eingerichtet hat. In einer Red Hat Enterprise Linux-Umgebung empfehle ich, sie in einer Datei mit dem Namen
rewrite-rules.confgelegen in
/etc/httpd/conf.d
Auf einem System mit einem Standard-Build von Apache müssen Sie diese möglicherweise am Ende des
httpd.confDatei befindet sich in
/usr/local/apache/conf
Antwort3
Fügen Sie in Ihrer httpd.conf-Datei etwas wie „include modrewrite.conf“ hinzu. Fügen Sie dann in der Datei moderewrite.conf die Umschreibregeln hinzu.
Stellen Sie außerdem sicher, dass Sie das Modul mod_rewrite eingebunden haben, falls es nicht kompiliert ist.
Antwort4
RewriteRules werden jedes Mal verarbeitet, wenn auf eine Ressource auf Ihrem Server zugegriffen wird, auf die sich die Regeln beziehen. Unabhängig davon, wo die Regeln abgelegt sind, werden sie jedes Mal analysiert.
Wenn Sie jedoch meinen, dass Ihnen der Mehraufwand nicht gefällt, der entsteht, wenn bei jeder Ressourcenanforderung die .htaccess-Datei von der Festplatte gelesen wird, dann ist die Antwort von Radius genau das Richtige für Sie, mit der zusätzlichen offensichtlichen Anweisung, die .htaccess-Datei anschließend zu entfernen, nachdem ihr Inhalt in die Hauptkonfigurationsdatei von Apache eingefügt wurde.