mod_rewrite und passwortschutz
Felix Riesterer
- programmiertechnik
Liebe Selfer,
ich experimentiere gerade mit mod_rewrite bei meinem Web-Projekt. Dieses mod_rewrite verwende ich, um von einer Navigation à la index.php?id=xyz weg- und zu realen Pfadnamen hinzukommen. Meinen Recherchen nach ist das für Suchmaschinen besser. Per mod_rewrite wird jede HTML-Datei umgebogen, damit sie von einer zentralen index.php angezeigt wird (vereinheitlichtes Layout, includierte Navigation usw.), eine beliebige PHP-Datei (und alle anderen) aber nicht.
Mein Problem: Ich habe ein Passwort-geschütztes Verzeichnis auf dem Server. In diesem Verzeichnis existieren zwei Dateien: index.html und eine script.php. Wenn jetzt diese index.html aufgerufen wird, dann wird sie auch von der zentralen, nicht passwortgeschützten index.php geparst und angezeigt. Der Server verlangt dabei aber trotzdem das Passwort für das Verzeichnis! Das will ich nicht! Es sollte die script.php per Passwort geschützt sein, die index.html aber nicht! Durch die Umleitung dachte ich, an diesem Passwort vorbei zu kommen, dem ist aber nicht so.
Was tun? Wie das Ganze anpassen?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hi,
Mein Problem: Ich habe ein Passwort-geschütztes Verzeichnis auf dem Server. In diesem Verzeichnis existieren zwei Dateien: index.html und eine script.php. Wenn jetzt diese index.html aufgerufen wird, dann wird sie auch von der zentralen, nicht passwortgeschützten index.php geparst und angezeigt.
d.h., du rufst sie über http://example.com/geschuetzes_verzeichnis/index.html o.ä. auf?
Der Server verlangt dabei aber trotzdem das Passwort für das Verzeichnis! [...] Durch die Umleitung dachte ich, an diesem Passwort vorbei zu kommen, dem ist aber nicht so.
existiert obiger URL (oder welche auch immer du dafür verwendest) denn real, oder nur "virutell" über mod_rewrite?
Das will ich nicht! Es sollte die script.php per Passwort geschützt sein, die index.html aber nicht!
du kannst auch nur einzelne dateien schützen, in dem du die Auth-konfiugrationsanweisungen nicht für das ganze verzeichnis gelten lässt, sondern beispielsweise in eine <Files> oder <FilesMatch>-direktive kapselst.
ob das hier dein problem schon lösen kann, ist aber schwer zu sagen - dazu wären mehr details nötig.
gruß,
wahsaga
Lieber wahsaga,
wieder einmal bekomme ich wertvolle Hinweise von Dir. :-))
http://example.com/html/geschuetzes_verzeichnis/index.html
existiert real, wird aber durch mod_rewrite umgebogen auf
http://example.com/html/index.php?pfad=/geschuetztes_verzeichnis/index.html
und die index.php erkennt (aus einer Art Datenbank), dass
1.) in der realen Datei
geschuetztes_verzeichnis/index.html
ein META-refresh auf script.php erfolgen soll,
2.) für dieses Verzeichnis aber ein Passwort benötigt wird
und gibt daher einen Link <a href="(pfad)/script.php" target="_blank"> mit dem Hinweis auf das Passwort aus. Da der Aufruf von script.php nicht ge-rewrited wird, kommt man auch nach Passwortabfrage an das Script.
Anscheinend wird vor dem mod_rewrite eine Prüfung des Servers auf eine vorhandene .htaccess im Zielverzeichnis vorgenommen _bevor_ die rewriteRule greift... Schade! Mein Konzept scheint daran zu scheitern.
Aber: wahsaga kennt eine Möglichkeit Dateien direkt zu schützen! Ich werde dem nachgehen. Es ist sehr gut möglich, dass das mein Problem lösen kann!
Ich danke Dir! Werde Bericht erstatten. :-)
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Lieber wahsaga,
ich bin ein entscheidendes Stück weiter gekommen! Danke!
So habe ich's gemacht:
Meine .htaccess-Datei habe ich umgebaut. Hier die neue Variante (mit gefälschten Pfadnamen ;-))
AuthType Basic
AuthUserFile /www/html/geschuetztes_verzeichnis/.htpasswd
AuthName "nur für Authorisierte Personen!"
<Files script.php>
<Limit GET>
require valid-user
</Limit>
</Files>
Deine Idee mit der <Files>-Direktive war der entscheidende Tipp!
Wunderbar! Jetzt werd' ich noch meine index.php anpassen - fertig.
Dir noch einen wundervollen Sonntag!
Liebe Grüße aus Ellwangen,
Felix Riesterer.