Seite 1 von 1

Direktaufruf verhindern um doppelten Content zu vermeiden

Verfasst: 24.12.2011 23:59
von htaccessLover
Hallo Leute,

ich bin PHP-Programmierer. Mit einer .htaccess Datei in / schreibe ich unter anderem /foo zu /test/foo.php um.
Code:
RewriteRule ^foo/$ test/foo.php


Das funktioniert wunderbar. Nun möchte ich allerdings jeden direkten Zugriff auf die Datei /test/foo.php blocken. Wenn ich das Verzeichnis test in / beispielsweise mit den Rechten 750 versehe (kein öffentlicher Zugriff) ist zwar der direkte Zugriff auf /test/foo.php blockiert, der auf /foo allerdings auch.

Wie verhindere ich den direkten Zugriff auf die Datei im Ordner? Der Aufruf der umgeschrieben URL (/foo) soll allerdings immer noch funktionieren.

Muss ich dazu eine .htaccess Datei in /test/ anlegen? Was muss da rein?

Selbiges soll nicht nur für .php Dateien funktionieren, sondern auch für .img, .html, usw.


Vielen Dank für Eure Hilfe!

Re: Direktaufruf verhindern um doppelten Content zu vermeide

Verfasst: 28.12.2011 20:35
von dwebx
Das mit dem dynamischen Weiterleiten auf unterschiedliche Dateiendungen funktioniert nicht. Und zwar aus dem einfachen Grund, dass mod_rewrite ja gar keine Endung von dir in der URI übergeben bekommt. Woher sollte er also wissen, was gemeint ist.

Das musst du dann per PHP erledigen, und zwar so, dass du alles an bspw. eine index.php schickst und der Seitenparameter dann dorthin übergeben wird. Erst im PHP-Script kannst Du dann prüfen, ob es beispielsweise eine foobar.html, foobar.img oder foobar.php gibt und diese dann aufrufen.

Ansonsten gibt es eine RewriteCondition die verhindert, dass Dateinamen direkt aufgerufen werden können

# Dateien und Ordner nicht umschreiben
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule <... hier dein code ...>