Müssen Sie Apache neu starten, damit die Regeln für das erneute Schreiben in .htaccess wirksam werden?

98

Ich habe meine .htaccess-Dateien in die Produktionsserver verschoben, aber sie funktionieren nicht. Wäre ein Neustart der nächste Schritt, oder sollte ich etwas anderes überprüfen.

Jesse Hattabaugh
quelle

Antworten:

93

Für Änderungen an .htaccess ist kein Neustart erforderlich. Etwas anderes stimmt nicht.

Stellen Sie sicher, dass Ihr .htaccess die Anweisung enthält

RewriteEngine on

Dies ist auch dann erforderlich, wenn es auch in httpd.conf vorhanden ist. Überprüfen Sie auch, ob .htaccess vom httpd-Prozess gelesen werden kann.
Überprüfen Sie das error_log - es informiert Sie über Fehler in .htaccess, wenn es verwendet wird. Das Einfügen eines absichtlichen Syntaxfehlers in .htaccess ist eine gute Überprüfung, um sicherzustellen, dass die Datei verwendet wird. Auf jeder Seite im selben Verzeichnis sollte ein 500-Fehler angezeigt werden.

Zuletzt können Sie ein Umschreibungsprotokoll mit Befehlen wie den folgenden in Ihrer httpd.conf aktivieren:

RewriteLog "logs / rewritelog"

RewriteLogLevel 7

Die so erzeugte Protokolldatei gibt Ihnen genau an, welche Umschreiberegeln übereinstimmen und wie sie behandelt wurden.

TomG
quelle
3
Dies ist etwas veraltet. Ich bin auf ein ähnliches Problem gestoßen und wollte meine Umschreibungen für einen bestimmten Anwendungsfall debuggen. Ich habe diese Methode ausprobiert, aber nach ein wenig Frust und Graben habe ich herausgefunden, wo das Problem liegt. Dies gilt für ältere Versionen von Apache. Für apache2.4> ersetzen Sie das obige RewriteLog & LogLevel durch : LogLevel alert rewrite:trace7. Nach dem Neustart von Apache sollten Sie die Spuren im error.log sehen. Hoffe, das hilft. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes
52

Nein :

Apache ermöglicht die dezentrale Verwaltung der Konfiguration über spezielle Dateien im Webbaum. Die speziellen Dateien werden normalerweise aufgerufen .htaccess, aber in der AccessFileName- Direktive kann ein beliebiger Name angegeben werden ... Da .htaccess-Dateien bei jeder Anforderung gelesen werden, werden Änderungen an diesen Dateien sofort wirksam ...

Milen A. Radev
quelle
Wenn Sie den Benutzernamen in Ihrer Site-fähigen Datei zu "Benutzer erforderlich" hinzugefügt haben, habe ich empirisch festgestellt, dass Sie einen Neustart benötigen. Ein Anmutiger tut es.
Ross
18

Aus der Apache-Dokumentation: Am häufigsten besteht das Problem darin, dass AllowOverride nicht so festgelegt ist, dass Ihre Konfigurationsanweisungen berücksichtigt werden. Stellen Sie sicher, dass für den betreffenden Dateibereich kein AllowOverride None aktiviert ist. Ein guter Test dafür ist, Müll in Ihre .htaccess-Datei zu legen und neu zu laden. Wenn kein Serverfehler generiert wird, ist mit ziemlicher Sicherheit AllowOverride None aktiviert.

Rattenfänger
quelle
1
Löschen des Links zu Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe
2
Ich füge diese Zeile "<Verzeichnis /> </ Verzeichnis>" zu meinem .htaccess hinzu, um einen Fehler im Protokoll zu generieren. Es wird "<Verzeichnis hier nicht erlaubt" angezeigt und ich weiß, dass es meine Datei liest.
Mnebuerquo
3

Nur wenn Sie nicht das Modul mod_rewrite zu Apache hinzugefügt.

Sie müssen Apache nur neu starten, wenn Sie Apache ".conf" -Dateien ändern.

ethyreal
quelle
2

Ich habe das gleiche Problem und es scheint, dass PiedPiper-Posts über AllowOverride am hilfreichsten waren. Überprüfen Sie Ihre httpd.conf-Datei auf "AllowOverride" und stellen Sie sicher, dass sie auf "Alle" gesetzt ist.

Dave Ip
quelle
1
Relevanter Beitrag: Wie man AllowOverride all einstellt
Zach Saucier
2

Im Falle von .htaccess ist kein Neustart erforderlich, wenn es nicht funktioniert.

  • AllowOverride Möglicherweise ist nicht festgelegt, welcher Benutzer in httpd.conf festlegen kann oder möglicherweise den Serveradministrator kontaktieren muss.

  • Überprüfen Sie den Dateinamen von .htaccess. Es sollte .htaccess und nicht htaccess.txt sein. Hier finden Sie eine Anleitung zum Erstellen eines .htaccess .

  • Versuchen Sie , Verwendung Options -Indexesoder deny allArt einfacher Richtlinie zu sehen , ob es funktioniert oder nicht.

  • Löschen Sie den Browser-Cache jedes Mal, wenn Sie eine Regel für Weiterleitungen oder ähnliches haben, wenn die vorherige Weiterleitung zwischengespeichert ist. Es sieht so aus, als ob die Dinge nicht funktionieren.

Abhishek Gurjar
quelle
0

Was ist in Ihrem .htaccess? RewriteRules? Überprüfen Sie, ob mod_rewrite installiert und aktiviert ist.

Andere Sachen? Versuchen Sie, AllowOverride in diesem Verzeichnis auf 'all' zu setzen.

ceejayoz
quelle