Da ich mit dem Code von WordPress nicht sonderlich vertraut bin und auch nicht die Zeit habe mich einzuarbeitet möchte ich hier einfach mal meine Grundidee vorstellen, evtl. findet sich ja ein fleißiger Entwickler der die Idee aufgreift in ein schönes Plugin umsetzt - mich würde es freuen.
Die Problematik
Hotlinking kennt ihr vermutlich alle: Eine andere Website bindet Bilder direkt von eurem Server ein - das erzeugt Traffic und bringt euch meist nichts, höchstens ihr verschandelt eure Bilder mit einem Wasserzeichen und selbst dann ist der Werbeerfolg eher gering.
Für dieses Problem gibt es natürlich eine einfache Lösung: Alle Referer die nicht die eigene Seite sind blockieren. Eine Anleitung dafür gibt es bei Traffic-Guards, Was ist Traffic-Klau ?
Das ist zwar eine Lösung aber nicht unbedingt optimal. Beispielsweise werden Bilder auch geblockt wenn Nutzer die Bildsuche von Google verwenden oder sich eine Seite im Cache anzeigen lassen. Dazu können weitere erwünschte Referer kommen die man vorher garnicht kennt.
Die Lösung
Ich habe das bei mir momentan sehr spartanisch gelöst:
Eine .htaccess leitet alle Anfragen auf Bilder im upload-Verzeichnis auf eine PHP-Datei um. Die .htaccess enthält zusätzlich eine Whiteliste mit leerem Referer und meiner eigenen Domain. Das sieht dann z.B. so aus:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.de(/.*)?$ [NC]
RewriteRule \.(gif|jpg|GIF|JPG)$ http://mydomain.de/wp-content/uploads/protector.php?url=%{REQUEST_URI} [L]
Die PHP-Datei führt nun zwei Funktionen aus. Zuerst wird der Referer und das Bild das aufgerufen wird in einer Textdatei gespeichert. Anschließend wird die Anfrage weiter umgeleitet - auf das gewünschte Bild.
So bleibt die Möglichkeit des Hotlinkings vorhanden, ich sehe aber recht schnell wo meine Bilder verlinkt werden, kann den Zusammenhang überprüfen...
Nun habe ich zwei Möglichkeiten: Entweder ich erweitere die Whitelist in der .htaccess um die entsprechende Seite (etwa Google) oder ich kann die Seite einer Blacklist in der .htaccess-Datei hinzufügen und entweder 404 oder eine Ersatzgrafik ausgeben. Beides schont dann den Server, gelistete Seiten tauchen natürlich auch nicht mehr in der Log-Datei auf. Unerwünschtes Hotlinking kann blockiert werden während erwünschtes Hotlinking weiterhin möglich ist und man spart sich den Ärger mit den Watermarks.
Das Problem ist nur, dass man das natürlich besser lösen kann - über ein schönes Interface im Admin-Bereich.
Hat jemand Interesse ein solches Plugin zu entwickeln?