Referrer-Policy für Apache konfigurieren
Schritt-für-Schritt-Anleitung: Den Referrer-Policy Header per .htaccess oder httpd.conf setzen — mit IfModule-Wrapper für Shared Hosting und fertigen Konfigurationsbeispielen.
Referrer-Policy auf Apache
Apache setzt den Referrer-Policy Header über das mod_headers-Modul. Für Shared-Hosting-Umgebungen ohne direkten Server-Zugriff funktioniert die .htaccess-Datei — der IfModule-Wrapper verhindert dabei Fehler, falls mod_headers nicht verfügbar ist. Auf eigenen Servern ist die httpd.conf effizienter.
Diese Anleitung zeigt beide Wege: .htaccess für Shared Hosting und die direkte Konfiguration via httpd.conf oder VirtualHost-Datei. Beide Methoden erzielen das gleiche Ergebnis — die Wahl hängt von Ihren Server-Berechtigungen ab.
.htaccess mit mod_headers
Die .htaccess-Methode funktioniert ohne Root-Zugriff und ist die Standardlösung für Shared-Hosting-Provider wie IONOS, Strato oder Mittwald. Der IfModule-Wrapper stellt sicher, dass die Direktive nur ausgeführt wird, wenn mod_headers geladen ist — ohne ihn würde ein 500-Fehler auftreten, falls das Modul fehlt.
# .htaccess — Referrer-Policy für Shared Hosting
<IfModule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule> # .htaccess — Alle empfohlenen Security-Header
<IfModule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
</IfModule> Apache liest .htaccess-Dateien bei jedem Request neu — kein Neustart oder Reload notwendig. Speichern Sie die Datei und testen Sie sofort mit curl oder im Browser.
httpd.conf-Alternative (eigene Server)
Auf eigenen Servern mit Root-Zugriff ist die Konfiguration in der httpd.conf oder in einer VirtualHost-Datei effizienter: Apache muss die Datei nicht bei jedem Request einlesen, und Sie haben volle Kontrolle über die Header-Policy pro VirtualHost oder Pfad.
# /etc/apache2/sites-enabled/ihre-domain.conf (Ubuntu)
# oder /etc/httpd/conf.d/ihre-domain.conf (CentOS)
<VirtualHost *:443>
ServerName ihre-domain.de
DocumentRoot /var/www/html
# Referrer-Policy für alle Responses
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Spezifisch für /admin/ — strengere Policy
<Location /admin/>
Header always set Referrer-Policy "no-referrer"
</Location>
</VirtualHost> systemctl reload apache2). .htaccess-Änderungen wirken dagegen sofort. Prüfen Sie vor dem Reload immer mit apachectl configtest. # Ubuntu/Debian: mod_headers aktivieren
sudo a2enmod headers
sudo systemctl restart apache2
# Status prüfen
apache2ctl -M | grep headers
# Konfiguration testen
apachectl configtest Konfiguration testen
Für .htaccess-Änderungen ist kein Neustart nötig — Apache liest die Datei bei jedem Request. Für Änderungen in der httpd.conf oder VirtualHost-Dateien prüfen Sie die Syntax zuerst und laden Apache dann neu.
Konfigurationsmethoden im Vergleich
| Methode | Neustart nötig? | Root-Zugriff? | Performance |
|---|---|---|---|
| .htaccess | Nein (sofort) | Nein | Langsamer (pro Request) |
| httpd.conf | Ja (Reload) | Ja | Schneller (einmalig) |
| VirtualHost-Datei | Ja (Reload) | Ja | Schneller (einmalig) |
.htaccess-Dateien werden nur verarbeitet, wenn AllowOverride All oder AllowOverride FileInfo in der VirtualHost-Konfiguration gesetzt ist. Bei AllowOverride None werden .htaccess-Dateien komplett ignoriert.
Konfiguration verifizieren
Nach der Konfiguration prüfen Sie mit curl, ob der Header korrekt ausgeliefert wird. Testen Sie sowohl den Webroot als auch Unterverzeichnisse — besonders wenn Sie Location-Direktiven verwendet haben.
# Konfiguration testen (kein Neustart nötig für .htaccess)
apachectl configtest
# Apache neu laden (für httpd.conf-Änderungen)
sudo systemctl reload apache2
# Referrer-Policy per curl prüfen
curl -sI https://ihre-domain.de | grep -i referrer-policy
# Erwartete Ausgabe:
# Referrer-Policy: strict-origin-when-cross-origin Wie steht Ihre Domain bei Referrer-Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Wie setze ich die Referrer-Policy in Apache per .htaccess?
Fügen Sie in Ihre .htaccess-Datei ein: <IfModule mod_headers.c> dann Header always set Referrer-Policy "strict-origin-when-cross-origin" und </IfModule>. Der IfModule-Wrapper verhindert Fehler, wenn mod_headers nicht geladen ist.
Muss mod_headers aktiviert sein?
Ja. mod_headers ist das Apache-Modul für HTTP-Header-Manipulation. Auf Shared Hosting ist es meist aktiviert. Auf eigenen Servern aktivieren Sie es mit a2enmod headers (Ubuntu/Debian) oder durch Entkommentieren von LoadModule headers_module in der httpd.conf, gefolgt von einem Apache-Neustart.
Was bedeutet always beim Header-Befehl?
Header always set setzt den Header bei allen Responses — also auch bei 4xx- und 5xx-Fehlern. Ohne always wird der Header nur bei erfolgreichen 2xx-Responses gesetzt. Für Security-Header sollten Sie immer always verwenden.
Wo lege ich die .htaccess-Datei ab?
Die .htaccess-Datei liegt im Webroot-Verzeichnis (typischerweise /var/www/html/ oder public_html/). Sie gilt für das Verzeichnis und alle Unterverzeichnisse. Jedes Verzeichnis kann eine eigene .htaccess haben — tiefer liegende Direktiven überschreiben höhere.
Was ist der Unterschied zwischen .htaccess und httpd.conf?
.htaccess wird bei jedem Request gelesen (kein Neustart nötig, aber langsamer) und ist ideal für Shared Hosting ohne Server-Zugriff. httpd.conf (oder Apache VirtualHost-Dateien) werden beim Start einmalig geladen (Neustart nötig, aber effizienter). Für Produktionsserver ist httpd.conf zu bevorzugen.
Kann ich verschiedene Policies für verschiedene Verzeichnisse setzen?
Ja. Legen Sie .htaccess-Dateien in verschiedene Verzeichnisse oder nutzen Sie Location-Direktiven in der httpd.conf. Ein /admin/-Verzeichnis könnte no-referrer nutzen, während das Hauptverzeichnis strict-origin-when-cross-origin verwendet.
Funktioniert AllowOverride für .htaccess auf meinem Server?
Nur wenn AllowOverride All oder AllowOverride FileInfo in der VirtualHost-Konfiguration gesetzt ist. Bei AllowOverride None werden .htaccess-Dateien komplett ignoriert. Prüfen Sie Ihre VirtualHost-Konfiguration. Bei Shared Hosting ist AllowOverride meistens aktiviert.