Erweiterte Header für Apache konfigurieren

Schritt-für-Schritt: Origin-Agent-Cluster mit mod_headers, HTTPS-Redirect per RewriteRule, WWW-Normalisierung und veraltete Header entfernen — mit fertigen Apache-Konfigurationen.

Apache · Schritt für Schritt

Erweiterte Header auf Apache

Apache HTTP Server setzt Header mit dem Modul mod_headers und Redirects mit mod_rewrite. Beide Module sind auf den meisten Linux-Distributionen vorinstalliert und müssen nur aktiviert werden. Diese Anleitung zeigt vier Schritte: Origin-Agent-Cluster, HTTPS-Redirect (301), WWW-Normalisierung und veraltete Header entfernen.

Die Konfigurationen funktionieren sowohl in httpd.conf / VirtualHost-Blöcken als auch in .htaccess-Dateien — mit den jeweils notierten Einschränkungen. Prüfen Sie ob mod_headers aktiviert ist: a2enmod headers && systemctl restart apache2. Die erweiterten Header bringen 4 von 166 Punkten im Wolf-Agents Web Security Check.

1 Schritt 1 von 4

Origin-Agent-Cluster setzen

In Apache wird Origin-Agent-Cluster: ?1 mit mod_headers gesetzt. Das Schlüsselwort always stellt sicher, dass der Header auch bei Fehlerantworten (4xx, 5xx) mitgesendet wird. Der Header isoliert die Seite in einem eigenen Browser-Prozess und verhindert Spectre-Seitenkanal-Angriffe.

/etc/apache2/conf-available/security-headers.conf mod_headers
# /etc/apache2/conf-available/security-headers.conf
# Modul aktivieren: sudo a2enmod headers

<IfModule mod_headers.c>
    # Prozess-Isolation gegen Spectre (RFC 8941 Structured Header)
    Header always set Origin-Agent-Cluster "?1"

    # Aktivieren: sudo a2enconf security-headers && systemctl reload apache2
</IfModule>
Modul aktivieren nicht vergessen

Vor der Konfiguration: sudo a2enmod headers && sudo a2enmod rewrite, dann sudo systemctl reload apache2. Ohne aktivierte Module werden die Direktiven still ignoriert.

2 Schritt 2 von 4

HTTPS-Redirect (301) konfigurieren

Apache leitet HTTP-Anfragen mit mod_rewrite und dem Flag R=301 auf HTTPS um. Der VirtualHost-Block für Port 80 enthält ausschließlich den Redirect — keine Inhalte, keine anderen Direktiven. Das Flag L beendet die Regelverarbeitung nach dem Redirect.

/etc/apache2/sites-available/000-default.conf R=301
# VirtualHost für HTTP → HTTPS Redirect
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
</VirtualHost>

# Alternativ mit mod_alias (einfacher, kein mod_rewrite nötig):
# Redirect permanent / https://example.com
Für einfache Redirects ohne Bedingungen ist Redirect permanent / https://example.com (mod_alias) eleganter als mod_rewrite. Bei kombinierten HTTP+WWW-Redirects ist mod_rewrite jedoch flexibler.
3 Schritt 3 von 4

WWW-Normalisierung einrichten

Die RewriteCond-Direktive prüft den HTTP_HOST auf das www.-Präfix. Der Capture-Group-Backreference %1 enthält den Domainnamen ohne www und wird in der Ziel-URL verwendet. Das Flag NC macht den Match case-insensitiv.

.htaccess oder VirtualHost WWW → non-WWW
# WWW → non-WWW (in .htaccess oder VirtualHost)
<IfModule mod_rewrite.c>
    RewriteEngine On

    # www.example.com → example.com (301)
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
</IfModule>

# Kombiniert: HTTP + WWW → HTTPS non-WWW in zwei Schritten
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
</IfModule>
SSL-Zertifikat muss beide Varianten abdecken (example.com und www.example.com). Let's Encrypt: certbot --domains example.com,www.example.com. Ohne gültiges Zertifikat für die www-Variante schlägt die HTTPS-Verbindung fehl, bevor der Redirect greifen kann.
4 Schritt 4 von 4

Veraltete Header entfernen

Apache sendet standardmäßig einen Server-Header mit vollständiger Versionsnummer und Betriebssystem. ServerTokens Prod reduziert dies auf "Apache". Header unset X-Powered-By entfernt PHP-Versionsangaben. X-XSS-Protection darf nicht gesetzt werden — der Header wurde aus allen Browsern entfernt.

/etc/apache2/conf-available/security.conf Aufräumen
# /etc/apache2/conf-available/security.conf

# Server-Version minimieren (nur "Apache", keine Versionsnummer)
ServerTokens Prod

# Apache-Signatur aus Fehlerseiten entfernen
ServerSignature Off

# X-Powered-By entfernen (PHP etc.)
<IfModule mod_headers.c>
    Header unset X-Powered-By

    # X-XSS-Protection NICHT setzen — aus Browsern entfernt (2023)
    # Header set X-XSS-Protection "1; mode=block" ← FALSCH!
</IfModule>

# Testen: apachectl configtest && systemctl reload apache2
Konfiguration verifizieren

Nach dem Reload: curl -sI https://example.com | grep -iE "(origin-agent|server|x-powered|x-xss)". Der Server-Header sollte nur "Apache" zeigen, X-Powered-By und X-XSS-Protection sollten fehlen.

Wie steht Ihre Domain bei Erweiterte Header?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Wie setze ich Origin-Agent-Cluster in Apache?

Mit der Direktive Header always set Origin-Agent-Cluster "?1" im VirtualHost-Block oder in der .htaccess-Datei. Das Schlüsselwort always stellt sicher, dass der Header auch bei Fehlerantworten gesendet wird. Dafür muss das Modul mod_headers aktiviert sein: sudo a2enmod headers.

Welches Apache-Modul brauche ich für den HTTPS-Redirect?

mod_rewrite muss aktiviert sein (a2enmod rewrite). Alternativ können Sie bei Apache 2.4+ die Direktive Redirect 301 / https://example.com nutzen, was mod_alias erfordert — einfacher und empfohlen für unkomplizierte Redirects ohne RewriteConditions.

Was ist der Unterschied zwischen ServerTokens Prod und ServerSignature Off?

ServerTokens Prod begrenzt den Server-Header auf den Produktnamen (nur "Apache", ohne Version). ServerSignature Off entfernt die Apache-Signatur aus Fehlerseiten. Beide zusammen minimieren die preisgegebenen Technologie-Informationen. In httpd.conf, nicht in .htaccess setzen.

Kann ich die Konfiguration in .htaccess statt in httpd.conf schreiben?

Ja, aber mit Einschränkungen. mod_headers und mod_rewrite funktionieren in .htaccess, sofern AllowOverride All (oder AllowOverride FileInfo Headers) gesetzt ist. ServerTokens und ServerSignature können nur in httpd.conf oder einer Include-Datei gesetzt werden — nicht in .htaccess.

Wie kombiniere ich HTTP-zu-HTTPS und WWW-zu-non-WWW in einer Regel?

Mit zwei RewriteConds vor einer RewriteRule: Die erste Bedingung prüft auf HTTP, die zweite auf www. Eine einzelne RewriteRule kann jedoch nur einen Aspekt korrigieren. Besser: Zwei separate RewriteRule-Blöcke, die sequenziell ausgeführt werden. Apache verarbeitet Redirects korrekt auch bei zwei aufeinanderfolgenden 301s.

Wie verifizizierie ich die Header nach dem Apache-Neustart?

Mit curl -sI https://example.com | grep -i origin-agent-cluster prüfen Sie, ob der Header korrekt gesetzt wird. Für einen vollständigen Check aller Header: curl -sI https://example.com. Nach Konfigurationsänderungen immer apachectl configtest && systemctl reload apache2 ausführen.

Prüft der Wolf-Agents Scanner Apache-spezifische Header-Konfigurationen?

Der Scanner prüft die gesendeten HTTP-Header unabhängig vom Webserver. Er erkennt, ob Origin-Agent-Cluster korrekt gesetzt ist, ob HTTPS-Redirects permanent (301) sind und ob veraltete Header wie X-XSS-Protection fehlen. Der zugrunde liegende Server spielt dabei keine Rolle.