Hotlinking bedeutet: Jemand bindet ein Bild von deinem Server auf seiner Website ein. Der Besucher sieht das Bild auf der fremden Seite, aber dein Server liefert die Datei aus. Du trägst den Traffic, die Bandbreite und die Serverlast - ohne davon zu profitieren. Bei einem einzelnen Forenbeitrag ist das harmlos. Bei einer vielbesuchten Seite, die dutzende deiner Bilder einbindet, kann es zum Problem werden.
Die Lösung: Per .htaccess festlegen, welche Domains deine Bilder einbinden dürfen und welche nicht. Es gibt zwei Ansätze - eine Whitelist (nur erlaubte Domains) und eine Blacklist (nur bestimmte Domains blockieren). Beide Varianten sind mit wenigen Zeilen Code umgesetzt.
Was ist Hotlinking?
Beim Hotlinking verwendet eine fremde Webseite die direkte URL zu einem Bild auf deinem Server. Im HTML-Code der fremden Seite steht dann etwas wie <img src="https://deine-domain.de/bild.jpg">. Das Bild wird nicht kopiert und auf dem fremden Server gespeichert, sondern bei jedem Seitenaufruf von deinem Server geladen.
Das Problem dabei: Du zahlst für den Traffic. Jeder Besucher der fremden Seite erzeugt eine Anfrage an deinen Server. Bei einem kleinen Blog fällt das kaum auf. Bei einer vielbesuchten Seite oder einem Forum kann sich das aber schnell summieren. Ausserdem hast du keine Kontrolle darüber, in welchem Kontext deine Bilder angezeigt werden.
Methode 1: Whitelist - nur bestimmte Domains erlauben
Die sicherste Variante. Nur die von dir freigegebenen Domains dürfen deine Bilder einbinden. Alle anderen bekommen statt des Originalbilds ein Ersatzbild angezeigt.
RewriteEngine On
# Leerer Referer = Direktaufruf, erlauben
RewriteCond %{HTTP_REFERER} !^$
# Eigene Domain erlauben
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?deine-domain\.de [NC]
# Google Bildersuche erlauben
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\. [NC]
# Bing Bildersuche erlauben
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?bing\. [NC]
# Ersatzbild selbst nicht blockieren
RewriteCond %{REQUEST_URI} !hotlink\.(png|jpg|webp)$ [NC]
# Alle Bilddateien umleiten
RewriteRule \.(gif|jpg|jpeg|png|webp|svg)$ /bilder/hotlink.png [NC,R,L]
Ersetze deine-domain\.de durch deine eigene Domain. Der Backslash vor dem Punkt ist wichtig, weil der Punkt in regulären Ausdrücken sonst als Platzhalter für jedes beliebige Zeichen gilt.
Was passiert hier Zeile für Zeile?
Die RewriteCond-Zeilen sind Bedingungen, die alle zutreffen müssen. Das Ausrufezeichen ! am Anfang bedeutet "nicht". Die Logik liest sich also so: Wenn der Referer nicht leer ist, und nicht von der eigenen Domain kommt, und nicht von Google kommt, und nicht von Bing kommt, und die angeforderte Datei nicht das Ersatzbild selbst ist - dann ersetze das Bild. [NC] macht den Vergleich unabhängig von Gross-/Kleinschreibung.
Das https?:// in den Bedingungen deckt sowohl HTTP als auch HTTPS ab. Das ist wichtig, weil manche Seiten noch über HTTP einbinden. Ohne das Fragezeichen nach dem "s" würden nur HTTPS-Referrer geprüft und HTTP-Hotlinks durchgelassen.
Methode 2: Blacklist - einzelne Domains blockieren
Wenn du nur bestimmte Seiten am Hotlinking hindern willst, ist eine Blacklist der einfachere Weg. Alle Domains dürfen deine Bilder einbinden - ausser die, die du explizit blockierst.
RewriteEngine On
# Leerer Referer = Direktaufruf, erlauben
RewriteCond %{HTTP_REFERER} !^$
# Diese Domains blockieren
RewriteCond %{HTTP_REFERER} ^https?://(www\.)?boeses-forum\.de [NC,OR]
RewriteCond %{HTTP_REFERER} ^https?://(www\.)?bilderklauer\.com [NC]
# Ersatzbild nicht blockieren
RewriteCond %{REQUEST_URI} !hotlink\.(png|jpg|webp)$ [NC]
# Bilder ersetzen
RewriteRule \.(gif|jpg|jpeg|png|webp|svg)$ /bilder/hotlink.png [NC,R,L]
Das [OR] am Ende der ersten Blockier-Bedingung bedeutet: Die Regel greift, wenn der Referer Domain A oder Domain B ist. Ohne [OR] müssten alle Bedingungen gleichzeitig zutreffen, was bei verschiedenen Domains keinen Sinn ergibt.
Die Blacklist hat den Vorteil, dass sie weniger Wartung braucht - du musst nicht jede neue Suchmaschine oder jeden Social-Media-Dienst in eine Whitelist aufnehmen. Der Nachteil: Du musst aktiv beobachten, wer deine Bilder einbindet, und neue Hotlinker manuell zur Blacklist hinzufügen.
Das Ersatzbild
Statt des Originalbilds zeigt der Server ein Ersatzbild an. Das kann ein einfacher Hinweis sein wie "Dieses Bild wird unerlaubt eingebunden" mit einem Link zu deiner Website. Es kann aber auch ein transparentes 1x1-Pixel-GIF sein, wenn du gar nichts anzeigen willst.
Das Ersatzbild liegt auf deinem Server und wird in der RewriteRule als Ziel angegeben. Achte darauf, dass die URL des Ersatzbilds selbst nicht von den Regeln blockiert wird - sonst entsteht eine Endlosschleife. Genau dafür sorgt die Zeile mit dem Ausschluss des Hotlink-Bildes in den RewriteCond-Bedingungen.
Ein cleverer Trick: Baue in das Ersatzbild eine URL zu deiner Website ein. Wer das Bild in einem Forum sieht, erfährt so, wo das Original herkommt - und du bekommst möglicherweise Besucher über diesen Weg.
Hotlink-Schutz für Nginx
Die .htaccess-Regeln funktionieren nur auf Apache. Auf Nginx richtest du den Schutz in der Server-Konfiguration ein:
location ~* \.(gif|jpg|jpeg|png|webp|svg)$ {
valid_referers none blocked server_names
*.google.com *.google.de
*.bing.com;
if ($invalid_referer) {
return 403;
}
}
valid_referers none erlaubt Direktaufrufe (kein Referer). blocked erlaubt Referer, die vom Proxy entfernt wurden. server_names erlaubt die eigene Domain. Alle anderen Anfragen bekommen einen 403-Fehler. Statt return 403; kannst du auch rewrite ^ /bilder/hotlink.png last; verwenden, um ein Ersatzbild auszuliefern.
CDN und Hotlinking
Wenn du ein CDN (Content Delivery Network) wie Cloudflare, Bunny.net oder KeyCDN nutzt, werden deine Bilder vom CDN ausgeliefert, nicht von deinem Server. In dem Fall nützen die .htaccess-Regeln nichts, weil die Anfrage gar nicht bei deinem Apache ankommt. Die meisten CDNs bieten eigene Hotlink-Schutz-Funktionen an. Bei Cloudflare findest du die Option unter "Scrape Shield" > "Hotlink Protection".
Häufige Fragen
Schadet Hotlink-Schutz der SEO?
Nicht, wenn du Google und Bing in der Whitelist hast. Diese Suchmaschinen binden Bilder in der Bildersuche über Hotlinks ein. Blockierst du sie, verschwinden deine Bilder aus den Suchergebnissen. Social-Media-Dienste (Facebook, Twitter/X, LinkedIn) solltest du ebenfalls freigeben, wenn du willst, dass geteilte Links eine Bildvorschau zeigen.
Wie finde ich heraus, wer meine Bilder hotlinkt?
Prüfe die Server-Logfiles (access.log) auf Anfragen für Bilddateien mit einem fremden Referer. Alternativ zeigt Google Search Console unter "Links" > "Verweisende Seiten" Seiten an, die auf deine Bilder verlinken.
Funktioniert der Schutz auch für WebP und SVG?
Ja, wenn du die Dateierweiterungen in der RewriteRule ergänzt. Die Beispiele oben enthalten bereits webp und svg.
Kann ich statt eines Ersatzbilds einen 403-Fehler zurückgeben?
Ja. Ersetze die letzte Zeile der RewriteRule durch RewriteRule \.(gif|jpg|jpeg|png|webp|svg)$ - [F,L]. Das [F] steht für "Forbidden" und gibt einen 403-Status zurück. Der Vorteil: Kein Ersatzbild nötig. Der Nachteil: Der Besucher der fremden Seite sieht ein kaputtes Bild-Symbol statt eines hilfreichen Hinweises.
Kommentararchiv 28
Leser diskutieren Praxiserfahrungen mit Hotlink-Schutz. Häufiges Thema: Suchmaschinen-Bildersuche (Google, Bing) muss in der Whitelist stehen, sonst verschwinden die Bilder aus den Suchergebnissen. Ein Leser weist darauf hin, dass die Regex sowohl http als auch https abdecken muss - sonst fallen Bilder durch, die über das andere Protokoll eingebunden werden. Weitere Anregung: Ein Crawler, der automatisch prüft ob die einbindende Seite einen Backlink setzt und daraus eine Whitelist pflegt.