dedlfix: .htaccess

Beitrag lesen

Hi!

RewriteEngine on
RewriteRule ^(.*).html$ index.php
leite ich alle Anfragen mit *.html an die index.php. Das funktioniert einwandfrei.

Nein, das arbeitet fehlerhaft, nur dass du den Fehlerfall anscheinend nicht ausreichend getestet hast. Der Punkt ist ein Sonderzeichen. Er kann nicht einmal für ein beliebiges Zeichen stehen und einmal für sich selbst, ohne dass konkret gekennzeichnet ist, was genau gewünscht ist. In deinem Fall steht der zweite Punkt ebenfalls für ein beliebiges Zeichen. Ihn auf einen Punkt einzuschränken verlangt, ihn mit einem vorangehenden Backslash zu notieren.

Im Webverzeichnis gibt es einen Ordner /statistik in welchem ebenfalls eine .html liegt. Was muss ich in der .htaccess schreiben das diese Datei nicht auf index.php geleitet wird bzw. ist das über die .htaccess im Document Root des Webverzeichniss überhaut möglich?

Genauso wie sich diese Regel in das Unterverzeichnis vererbt, wird sich auch eine Ausschlussklausel weitervererben. Üblicherweise möchte man, dass alle vorhandenen Dateien direkt ausgeliefert werden und nur nicht Vorhandenes umgeschrieben wird.

RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ...

Wenn du wirklich nur die eine Datei ausschließen möchtest, dann kannst du mit einer ähnlichen RewriteCond den angefragten Request-Filename auf den Namen der Statistik-HTML-Datei prüfen.

Lo!