Zum Inhalt springen
Seitensicht

.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.

www oder ohne?

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

Ergebnis · 64 Zeilen · 2.8 KB
# .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.