Mit einer .htaccess Datei kannst du bestimmte Webserver Einstellungen für deine Website setzen. Dazu gehören zum Beispiel HTTPS Weiterleitungen, HSTS Header, Cache Regeln und Schutzregeln gegen Hotlinking.
Lege die .htaccess Datei in dem Verzeichnis ab, für das die Regeln gelten sollen. Die Regeln wirken auch auf Unterverzeichnisse, sofern sie dort nicht überschrieben werden.
HTTPS per .htaccess erzwingen
Wenn deine Website über HTTPS erreichbar ist, kannst du HTTP Aufrufe automatisch auf HTTPS weiterleiten.
Beispiel:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]Diese Regeln leiten alle HTTP Aufrufe dauerhaft auf die entsprechende HTTPS URL weiter.
HSTS aktivieren
HTTP Strict Transport Security, kurz HSTS, ist ein Sicherheitsmechanismus für HTTPS Verbindungen. Der Browser merkt sich dabei, dass eine Domain für einen bestimmten Zeitraum nur noch per HTTPS aufgerufen werden soll.
Dadurch kann HSTS unter anderem vor Downgrade Angriffen schützen, bei denen eine Verbindung von HTTPS auf HTTP zurückgestuft werden soll.
Ein einfacher HSTS Header sieht so aus:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>max-age=31536000 bedeutet, dass der Browser die Regel für ein Jahr speichert.
HSTS für Subdomains aktivieren
Wenn HSTS auch für alle Subdomains gelten soll, kannst du includeSubDomains ergänzen:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>Verwende diese Option nur, wenn auch alle Subdomains zuverlässig per HTTPS erreichbar sind. Andernfalls können Besucher bestimmte Subdomains möglicherweise nicht mehr aufrufen.
HSTS Preload verwenden
Mit preload kannst du deine Domain grundsätzlich für die Aufnahme in die HSTS Preload Liste vorbereiten:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>Verwende preload nur, wenn du sicher bist, dass die Domain und alle Subdomains dauerhaft per HTTPS erreichbar bleiben. Eine Aufnahme in die Preload Liste kann langfristige Auswirkungen haben und lässt sich nicht sofort rückgängig machen.
Weitere Informationen und Tests findest du unter:
https://hstspreload.org
https://securityheaders.comHTTPS Weiterleitung und HSTS kombinieren
Eine typische .htaccess Konfiguration kann so aussehen:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>Teste die Konfiguration nach dem Speichern im Browser. Prüfe außerdem, ob alle Bilder, Skripte, Stylesheets und externen Ressourcen per HTTPS geladen werden.
Cache Lebensdauer per .htaccess festlegen
Mit mod_expires kannst du festlegen, wie lange Browser bestimmte Dateien zwischenspeichern sollen. Das kann Ladezeiten verbessern, weil wiederkehrende Besucher Dateien wie Bilder, CSS oder JavaScript nicht bei jedem Aufruf erneut vom Server laden müssen.
Die Regeln trägst du in eine .htaccess Datei ein. Lege die Datei in dem Verzeichnis ab, für das die Cache Regeln gelten sollen, zum Beispiel in public_html.
Ein einfaches Beispiel:
ExpiresActive On
ExpiresDefault "access plus 30 seconds"Damit erhalten alle Dateien eine Cache Lebensdauer von 30 Sekunden. Wenn ein Besucher die Seite nach mehr als 30 Sekunden erneut lädt, fordert der Browser die Dateien wieder vom Server an.
Du kannst die Cache Lebensdauer auch nach Dateityp festlegen:
ExpiresActive On
ExpiresDefault "access plus 1 hour"
ExpiresByType image/gif "access plus 1 hour"
ExpiresByType image/jpeg "access plus 1 hour"
ExpiresByType image/png "access plus 1 hour"
ExpiresByType text/html "access plus 4 minutes"
ExpiresByType text/plain "access plus 4 minutes"
ExpiresByType text/css "access plus 1 hour"
ExpiresByType application/javascript "access plus 1 hour"Wenn du nur einen bestimmten Dateityp beeinflussen möchtest, kannst du auch nur dafür eine Regel setzen:
ExpiresActive On
ExpiresByType image/gif "access plus 1 minutes"Passe die Werte an deine Website an. Für häufig geänderte HTML Inhalte sind kurze Cache Zeiten sinnvoll. Für statische Dateien wie Bilder, CSS oder JavaScript kannst du meist längere Cache Zeiten verwenden.
Wenn du lange Cache Zeiten für CSS oder JavaScript verwendest, solltest du bei Änderungen Dateinamen oder Versionsparameter ändern. Andernfalls kann es passieren, dass Besucher weiterhin eine alte Version aus dem Browser Cache sehen.
Dateien vor Hotlinking schützen
Hotlinking bedeutet, dass eine fremde Website Dateien direkt von deinem Webspace einbindet. Das betrifft häufig Bilder, Videos oder größere Downloads.
Mit folgenden Regeln kannst du verhindern, dass bestimmte Dateitypen von fremden Domains eingebunden werden:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com(/.*)?$ [NC]
RewriteRule \.(gif|jpg|jpeg|png|webp|zip|mpg)$ - [F,NC]Ersetze example\.com durch deine eigene Domain. Den Punkt in der Domain musst du mit einem Backslash maskieren.
Beispiel:
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com(/.*)?$ [NC]Für example.com bleibt die Schreibweise also example\.com.
Schütze einen Ordner vor Einsicht über den Browser
In der konsoleH kannst du unter der Rubrik Einstellungen → Serverkonfiguration den Verzeichnisindex für alle Ordner einzeln aktivieren oder deaktivieren.
Wähle dazu den Ordner aus und klicke auf die Schaltfäche Serverkonfiguration.
Anschließend kannst du Verzeichnisindex auswählen. Hier kannst über die Schaltfläche den Index aktivieren bzw. deaktivieren.
Als Defaultwert ist der Verzeichnisindex standardmäßig deaktiviert.
Weitere Domains erlauben
Wenn Dateien auch von weiteren eigenen Domains eingebunden werden dürfen, kannst du zusätzliche Bedingungen ergänzen:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.net(/.*)?$ [NC]
RewriteRule \.(gif|jpg|jpeg|png|webp|zip|mpg)$ - [F,NC]Hinweise
Schütze mit dieser Methode vor allem Bilder, Videos, Archive oder andere statische Dateien.
HTML und PHP Dateien solltest du damit in der Regel nicht schützen. Andernfalls können normale Links von anderen Websites auf deine Inhalte blockiert werden.
Beachte außerdem, dass der HTTP Referer nicht immer zuverlässig gesetzt wird. Einige Browser, Firewalls oder Datenschutz Erweiterungen können ihn entfernen oder verändern.