Direktaufruf verhindern um doppelten Content zu vermeiden

URLs umschreiben, umleiten, blocken oder sperren - all das und noch viel mehr kann mit mod_rewrite erreicht werden. Mit regulären Ausdrücken, Conditions und Rules stehst Du auf Kriegsfuss? mod_rewrite macht nicht das was Du willst, oder funktioniert gar nicht? hier bist Du richtig!

Moderatoren: Bob, Super-Mod

Direktaufruf verhindern um doppelten Content zu vermeiden

Beitragvon htaccessLover » 24.12.2011 23:59

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!
htaccessLover
.
.
 
Beiträge: 3
Registriert: 24.12.2011 23:58

Re: Direktaufruf verhindern um doppelten Content zu vermeide

Beitragvon dwebx » 28.12.2011 20:35

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 ...>
dwebx
.
.
 
Beiträge: 23
Registriert: 17.12.2011 16:05
Wohnort: Gera


Zurück zu mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste