Rothilde: Eure Meinung zu dieser htaccess

Beitrag lesen

RewriteCond %{REQUEST_URI} meine.kml
RewriteCond %{HTTP_REFERER} !^http://localhost/dir/seiten/.* [NC] 
RewriteRule ^(.*)$ - [F] 

Das Muster ^(.)$ für RewriteRule ist in diesem Umfang herzlich sinnlos. Du schreibst "irgendwas (der Teil . des Musters) zwischen Anfang (^) und Ende ($), und das Irgendwas bitte kopieren (die runden Klammern um .)". Da kannst du es auch gleich bei "irgendwas" belassen und, weil du das Irgendwas nirgends weiterverwendest, dir auch die Kopie sparen. Kurzum: . statt ^(.*)$

Das Muster in RewriteCond %{REQUEST_URI} meine.kml ist nicht das, was du haben willst. Es passt auf die Wörter meine und kml, die von irgendeinem Zeichen (.) getrennt sind, also meine.kml, meinakml, meinebkml, meineZkml, etc. Zumindest hättest du wohl meine.kml haben wollen.
Vielleicht möchtest du auch nicht alle URLs, die meine.kml enthalten (/meine.kml, dings/meine.kml/, herrjemeine.kmlistweg, etc), sondern nur eine an einem bestimmten Ort, zum Beispiel im Wurzelverzeichnis (^meine.kml$) oder vielleicht liegt sie auch in /dir/seiten/ (^dir/seiten/meine.kml$).

Last but not least: Der erste Parameter von RewriteRule ist nicht umsonst ein Muster. Im Moment weist du RewriteRule an, beliebige Pfade zu akzeptieren (.*) und lässt dann mit einer separaten RewriteCond-Zeile den Pfad zu meine.kml rausfiltern. Diese doppelte Prüfung ist sinnlos, schreibe gleich RewriteRule ^pfad/zu/meine.kml$ - [F] und entsorge die erste RewriteCond-Zeile.

Meine Bedenken: Wie hoch ist die Wahrscheinlichkeit, das durch die htaccess für viele Nutzer meine Seite nicht funktioniert, weil deren Browser z.B. keinen Referrer sendet?

Das funktioniert wahrscheinlich für niemanden außer dich, weil die verweisende URL auf localhost, also den eigenen Rechner zeigen muss und du wohl der Einzige bist, der deine Seiten auf einem Webserver auf dem eigenen Rechner unterm Schreibtisch laufen lässt.

Ersetzt du localhost durch die Domain eines Webservers, dürfte meines Erachtens kaum jemand betroffen sein. Beobachte die Meldungen im Fehlerprotokoll deines Webservers, dann weisst du es genau.

Davon unabhängig halte ich dein ganzes Vorgehen für ein wenig … albern. Wer die KML-Datei haben will, bekommt sie auch. Dass sie nur mit passender Referer:-Zeile zu haben ist, fällt schnell auf, und beliebige Referer:-Angaben zu senden ist nun wirklich kein Problem.