snippets · config

Warum ignoriert Apache meine .htaccess?

Du änderst eine Rewrite-Regel in .htaccess – und exakt nichts passiert. Keine Fehlermeldung, kein Redirect, kein Rewrite.

Das Problem

Apache verarbeitet .htaccess nur, wenn die Serverkonfiguration Overrides für das betreffende Verzeichnis erlaubt. Der Default von AllowOverride ist None.

Erst beweisen, dass die Datei überhaupt gelesen wird

Auf einer Testumgebung kannst du kurzzeitig eine absichtlich ungültige Direktive eintragen:

THIS_MUST_FAIL

Kommt daraufhin ein 500, liest Apache die Datei. Bleibt alles unverändert, ist sehr wahrscheinlich die .htaccess für diesen Pfad deaktiviert oder du bearbeitest nicht den tatsächlich verwendeten DocumentRoot.

Die echte Serverkonfiguration könnte zum Beispiel enthalten:

<Directory "/var/www/htdocs">
    AllowOverride FileInfo
</Directory>

Für Rewrite-Regeln ist FileInfo relevant. AllowOverride All funktioniert ebenfalls, ist aber breiter als nötig.

Zusätzlich prüfen

apachectl -S
apachectl -M | grep rewrite

Damit siehst du VirtualHosts/DocumentRoots und ob mod_rewrite geladen ist.

Wichtig

Die absichtlich ungültige Direktive sofort wieder entfernen. Auf Shared Hosting kannst du AllowOverride meist nicht selbst setzen; dort ist es eine Eigenschaft der Hoster-Konfiguration.

Quelle: https://httpd.apache.org/docs/2.4/howto/htaccess.html