Rolf B: Newbie-Frage zur .htaccess

Beitrag lesen

Hallo curtis,

das / vor und hinter dem Dateinamen - hast Du das von JavaScript abgeschaut? In einer RewriteRule gibt's keinen Delimiter. Apache würde die / als Directory-Slashes interpretieren. Die müssen weg.

Da die RewriteRule in der .htaccess steht, bekommt die RewriteRule ohnehin nur den Teil des Dateinamens zu sehen, der relativ zu dem Ordner ist, in dem die .htaccess steht. Ein / zu Beginn des Patterns widerspricht dem und möglicherweise spuckt der Apache schon deshalb einen Error.

Du musst auch den Punkt maskieren. Ein Punkt ist in einer Regex ein Wildcard-Zeichen, d.h. dokument1.pdf würde auch auf die Datei dokument14pdf zutreffen.

Schlimmer noch: dieses Muster würde auch auf testdokument14pdf.doc zutreffen, weil eine Regex auch Teilstrings findet, wenn man das nicht abstellt.

Zum Abstellen musst Du Anker hinzufügen: ^ für den Anfang des Texts und $ für das Ende.

Dein Pattern müsste also ^dokument1\.pdf$ heißen.

Die Gone-Option solltest Du dann noch um ein L (Last) ergänzen, damit der Apache keine weiteren RewriteRules mehr prüft.

RewriteEngine On
RewriteRule ^dokument1\.pdf$ - [G,L]
RewriteRule ^dokument2\.pdf$ - [G,L]

sollte besser funktionieren. Wenn es wirklich diese beiden Dateinamen sind, kannst Du das mit Regex-Sprachmitteln auch in einer Regel abhandeln:

RewriteEngine On
RewriteRule ^dokument[12]\.pdf$ - [G,L]

Unterlagen zur Syntax von PCRE Regexen findest Du bspw. im PHP Handbuch. Eine Regex-Bastelstube ist bspw. https://regex101.com (PCRE auswählen)

Rolf

--
sumpsi - posui - obstruxi