.htaccess erstellen
Die Datei steuert bei Apache, wie der Server ausliefert: Weiterleitungen, Verschlüsselung, Komprimierung, Zugriffsrechte. Hier zusammenklicken statt aus fremden Foren zusammenkopieren.
Domain
Mit oder ohne https:// und www – der Rest wird abgeschnitten.
Ohne Domain lassen sich weder die www-Weiterleitung noch der Schutz vor Bilder-Diebstahl erzeugen – beide Blöcke fehlen deshalb unten.
Weiterleitungen
Eine Adresse, eine Seite: Ist dieselbe Seite unter mehreren Adressen erreichbar, verteilt sich ihre Wirkung in Suchmaschinen auf beide.
Muster: /alt /neu. Die alte Adresse beginnt mit einem Schrägstrich, das Ziel darf auch vollständig sein. Zeilen mit # werden übersprungen.
Tempo
Sicherheit
Leer lassen heißt: Es bleibt bei der Voreinstellung des Servers.
Fehlerseiten
# .htaccess
#
# Erzeugt mit seitensicht.de. Gilt für Apache ab 2.4.
# Vor dem Hochladen eine Sicherung der bestehenden Datei anlegen.
# --- Weiterleitungen ---------------------------------------------
<IfModule mod_rewrite.c>
RewriteEngine On
# Immer verschlüsselt ausliefern.
# %{HTTPS} ist hinter einem Proxy oft leer – deshalb zusätzlich der
# weitergereichte Header, sonst entsteht eine Endlosschleife.
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# --- Komprimierung -----------------------------------------------
# Text vor dem Senden komprimieren. Der größte Einzelgewinn bei der Ladezeit,
# den eine .htaccess überhaupt bringen kann – oft 60 bis 80 Prozent weniger.
# Bilder fehlen bewusst: JPG, PNG und WebP sind bereits komprimiert.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/javascript application/x-javascript text/javascript
AddOutputFilterByType DEFLATE application/json application/xml application/rss+xml
AddOutputFilterByType DEFLATE image/svg+xml font/woff2 font/ttf
</IfModule>
# --- Browser-Zwischenspeicher ------------------------------------
# Wie lange der Browser Dateien behalten darf, ohne erneut zu fragen.
# HTML bewusst kurz: Sonst sehen wiederkehrende Besucher tagelang die alte Fassung.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 10 minutes"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresDefault "access plus 1 month"
</IfModule>
# Ein Jahr wirkt nur, wenn Dateinamen sich bei Änderungen ändern
# (stil.a1b2c3.css). Sonst hier auf wenige Stunden heruntersetzen.
# --- Verzeichnisse -----------------------------------------------
# Ohne Startdatei kein Inhaltsverzeichnis anzeigen – sonst kann jeder sehen,
# welche Dateien in einem Ordner liegen.
Options -Indexes
# --- Vertrauliche Dateien ----------------------------------------
# Konfigurations- und Versionsdateien sind über den Browser erreichbar, wenn sie
# im Web-Ordner liegen. .env enthält oft Zugangsdaten im Klartext.
<FilesMatch "^\.|\.(env|ini|log|sh|sql|bak|old|swp|dist)$">
Require all denied
</FilesMatch>
# Die .htaccess selbst ebenfalls.
<Files ".htaccess">
Require all denied
</Files>
Vor dem Hochladen
Sichere die bestehende Datei. Ein Tippfehler in der .htaccess legt die ganze Website mit einem Fehler 500 lahm – und zwar sofort, ohne Neustart. Mit einer Kopie daneben bist du in zehn Sekunden wieder online.
Die Datei gehört ins Hauptverzeichnis der Website, meist public_html oder htdocs. Der Name beginnt mit einem Punkt; viele Dateimanager blenden solche Dateien standardmäßig aus.
Nur für Apache. Läuft deine Seite hinter nginx – oder auf Node.js wie diese hier –, wird die Datei schlicht ignoriert. Dort gehören dieselben Einstellungen in die Serverkonfiguration.
Jeder Block trägt einen Kommentar, der erklärt, was er tut. Was du nicht verstehst, solltest du nicht hochladen: Eine .htaccess kann eine Seite auch unerreichbar machen.
Zwei Fallstricke
Ein Jahr Zwischenspeicher wirkt nur mit Hashes im Dateinamen. Heißt deine Datei dauerhaft stil.css, sehen wiederkehrende Besucher nach einer Änderung ein Jahr lang die alte Fassung. Erst ein wechselnder Name wie stil.a1b2c3.css löst das. Im Zweifel die Angaben auf wenige Stunden heruntersetzen.
Beim Bilder-Schutz bleibt die leere Bedingung stehen. Manche Zugriffe senden gar keine Herkunftsangabe – E-Mail-Vorschauen und einige Suchmaschinen etwa. Ohne diese Ausnahme blieben deine Bilder auch dort leer.
Ob die Weiterleitungen anschließend greifen, siehst du im Seiten-Check – er verfolgt die gesamte Weiterleitungskette und meldet Umwege.
