Foto von Denys Nevozhai

Serversteuerung
Die Magie der .htaccess-Datei

Mit der .htaccess-Datei steuerst Du das Verhalten des Servers, der Deine Webseiten ausliefert. Dazu gehören passwortgeschützte Websites, direkte Umleitungen von URLs oder auch die Kompression der Auslieferung via gzip.

Hypertext Access, häufig abgekürzt als .htaccess, ist eine Konfigurationsdatei mit mächtigen Funktionen. Über eine .htaccess steuerst Du das Verhalten eines Servers – z.B. was passieren soll, wenn der Server eine aufgerufene Internetseite nicht findet oder Du kannst eine Website mit einer Passwortabfrage schützen.

Was ist eine .htaccess-Datei?

Die .htaccess liegt als Konfigurationsdatei in einem Verzeichnis und wirkt sich auf dieses und alle dazugehörigen Unterverzeichnisse aus. Die .htaccess bietet also nützliche Funktionn, die es Webmastern ermöglicht den Server zu kontrollieren.

Die .htaccess-Datei selbst ist eine einfache Textdatei, in welche Du spezifische Befehle tippst. Am Besten erstellst und bearbeitest Du sie mit einem Texteditor wie z.B. VS Code.

Wo befindet sich die .htaccess-Datei?

Das erste, was Du herauszufinden musst, ist, ob Dein Webhoster Dir tatsächlich erlaubt, .htaccess-Dateien zu bearbeiten. Aufgrund von Sicherheitsproblemen, die auftreten können, halten viele Webhoster ihre Kunden davon ab, die .htaccess-Datei zu bearbeiten. Dazu siehst Du Dir am Besten Dein Webhosting-Paket an oder fragst beim Support nach.

Einige Betriebssysteme zeigen die .htaccess-Datei möglicherweise nicht auf Deinem Computer an. Das ist z.B. oft bei einem Mac-Computer der Fall. Darum musst Du möglicherweise sicherstellen, dass die Einstellungen auch versteckte Dateien anzeigen. Ebenso zeigen einige FTP-Clients die .htaccess-Datei nicht immer direkt an, wenn Du auf Deinen Webspace zugreifst.

Nutzt Du z.B. Filezilla, musst Du den Menüpunkt Server > Auflistung versteckter Dateien erzwingen auswählen – siehe Abbildung.

Damit Filezilla versteckte Dateien anzeigt, musst Du ein Häkchen bei Auflistung versteckter Dateien erzwingen setzen.

Vorsicht und Nerven behalten bei der Nutzung von .htaccess

Die .htaccess-Datei gibt Dir eine Menge Kontrolle darüber, was auf Deiner Website passiert. Aber Unfälle passieren. Wenn Du z.B. vergisst Deine Weiterleitungs-URL mit einem Schrägstrich / zu starten, kann das Deine gesamte Website zum Absturz bringen.

Deshalb erstelle vor Veränderungen immer erst eine Sicherungskopie. Hilfreich ist eine alte funktionierende .htaccess-Dateien aufzubewahren, die Du bereits verwendet hattest. Das spart Dir Zeit, Nerven und holt Deine Website im schlimmsten Fall zurück von den Toten.

Denn .htaccess ist extrem empfindlich. Ein fehlendes Semikolon, ein falscher Buchstabe oder ein zusätzlicher Backslash kann das gesamte System durcheinander bringen. Darum sei bitte Vorsicht und tippe alle Befehle genau ab.

Lass’ Dich davon aber nicht abschrecken. Denn mit .htaccess lassen sich ein paar magische Dinge anstellen. Die folgenden Anleitungen zeigen Dir, wie Du leicht passwortgeschützte Bereiche aufbaust, gelöschte Seiten umleitest oder gezielt bei fehlerhaften Webseitenaufrufen eine 404-Fehlerseite anzeigen lässt.

Hilfreiche 404 Fehlerseiten

Eine 404-Fehlermeldung ist der Standard-HTTP-Antwortcode, der zurückgegeben wird, wenn der Besucher nicht mit dem Server kommunizieren kann. Der Besucher erhält eine standardisierte 404-Fehlerseite.

Dies ist ein sehr häufiger Fehler im Web, der auftritt, wenn Du versuchst, eine Seite zu besuchen, die entweder gelöscht oder an einen anderen Ort verschoben wurde.

Wenn Du zum Beispiel die Struktur Deiner Website änderst und ein bestimmtes Verzeichnis in einen anderen Teil der Website verschiebst, erhält jeder, der versucht, die alte Seiten-URL zu besuchen, eine 404-Fehlermeldung.

Wenn ein Besucher auf Deine Website kommt und eine Standard-404-Fehlermeldung sieht, die keine Aussage hat, dann ist es unwahrscheinlich, dass er sich die Mühe macht, irgendeinen Teil Deiner Website zu sehen. Darum ist es sehr wichtig, eine 404-Seite zu erstellen, die das abfedert.

Schau Dir unsere Beispiele für erfolgreiche 404-Fehlerseiten an und lass Dich inspirieren.

Glücklicherweise macht .htaccess dies sehr einfach. Zuerst musst Du eine 404-Fehlerseite erstellen. So würden Sie z.B. eine Seite auf https://www.deinedomain.de/404.php erstellen.

Sobald Du Deine 404-Seite eingerichtet hast, brauchst Du nur noch Besucher mit falschen Url’s auf diese Seite umzuleiten. Dazu fügst Du einfach die folgende Zeile in die .htaccess-Datei ein:

ErrorDocument 404 /404.php

https forcieren

Wenn Du ein SSL-Zertifikat für Deine Website eingebaut hast und https funktioniert, dann leitest Du am Besten alle http-Anfragen mit den folgenden Server-Befehlen in der .htaccess-Datei um.

Getestet für HostEurope

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Redirect-Umleitungen legen für Suchmaschinen und Besucher

Ein 301 HTTP Response Status Code ist eine Möglichkeit, Suchmaschinen mitzuteilen, dass eine Seite, Seiten, ein Verzeichnis oder eine ganze Website dauerhaft an einen anderen Ort im Web verschoben wurde.

Der grundlegende Code für die Weiterleitung ist :

Redirect 301 /artikel.html https://phlow.de/artikel.html

Der alte Speicherort der Datei muss der absolute Pfad vom Stammverzeichnis Ihres Servers sein. Der neue Speicherort sollte http verwenden.

gzip-Komprimierung aktivieren

gzip ist ein freies Kompressionsprogramm, das, ebenso wie das entsprechende Dateiformat gzip, praktisch für alle Computerbetriebssysteme verfügbar ist (unter den Bedingungen der GPL auch im Quelltext).

Ob eine Website Dateien komprimiert per gzip ausgibt, testest Du leicht mit Online-Werkzeug, wie diesem gzip-Test. Wenn gzip nicht aktiviert ist, kannst Du den folgenden Code nutzen.

<IfModule mod_deflate.c>
# Komprimiere HTML, CSS, JavaScript, Text, XML und fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
 
  # Browser bugs entfernen (nur für wirklich alte Browser)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresDefault "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType text/html "access plus 3 days"
  ExpiresByType text/xml "access plus 1 seconds"
  ExpiresByType text/plain "access plus 1 seconds"
  ExpiresByType application/xml "access plus 1 seconds"
  ExpiresByType application/rss+xml "access plus 1 seconds"
  ExpiresByType application/json "access plus 1 seconds"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
  ExpiresByType application/x-javascript "access plus 1 week"
  ExpiresByType image/x-ico "access plus 1 year"
  ExpiresByType image/x-icon "access plus 1 year"
  ExpiresByType application/pdf "access plus 1 month"
</IfModule>

.htaccess – Weiterführende Websites