Ich versuche das "ultimative" Anti-Hot-Linking zu schreiben .htaccess ...
Sie können viele Beispiele / Tutorials / Generatoren im Internet finden, aber viele davon sind falsch oder unvollständig (oder sogar beides).
Dies sind die Funktionen, nach denen ich suche:
- Muss die Hot-Verknüpfung für eine Liste von Dateierweiterungen blockieren, wenn HTTP_REFERER eine fremde Site ist.
- Muss Hotlink für die aktuelle Domain (duh) zulassen, ohne sie im .htaccess zu harcodieren.
- Für die aktuelle Domain muss es unter http und https funktionieren.
- Für die aktuelle Domain muss es mit www und ohne www funktionieren.
- Muss in der Lage sein, Ausnahmedomänen zu diesen Regeln hinzuzufügen (wie unser Freund Google) und diese Domänen müssen unter http und https und mit www oder ohne www funktionieren.
Folgendes habe ich bisher erreicht:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Meine Fragen:
- Wie vermeide ich es,
mydomain.com
im .htaccess fest zu codieren ? (Es wäre großartig, diesen .htaccess für alle meine Domänen bereitstellen zu können, ohne ihn für jede von ihnen ändern zu müssen.) - In meiner RewriteRule,
gif|jpe?g|png|zipx?
entspricht nichtgif|jpg|jpeg|png|zip|zipx
wahr? (Sorry noch neu bei regulären Ausdrücken.) - Sehen Sie etwas Schlechtes in meinem .htaccess, von dem ich nichts weiß?
Für # 1 weiß ich, dass es etwas möglich ist. Das nächste, das ich gefunden habe, ist dieses Snippet, das das WWW aus der URL entfernt, ohne die Domain fest zu codieren. Gibt es eine Möglichkeit, diese Methode für meine Frage Nr. 1 zu verwenden?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Aktualisieren:
Mir sind Lösungen bekannt, die ein Bild mit Wasserzeichen anstelle des normalen liefern. Aber ich suche nicht nach einer solchen Lösung. Ich möchte eine universelle Lösung (dienen 403 Fehler), die für alle Arten von Binärdateien (zip, exe, iso, jpg, png, gif ...) funktioniert.