Was ist die .htaccess Datei? Umfangreich erklärt + 9 Beispiele
Die .htaccess ist eine Textdatei, mit der das Verhalten von Webservern bzw. der darauf gespeicherten Websites gesteuert werden kann. Sie wird vor jedem Seitenaufruf abgearbeitet. Du kannst damit z.B.: Domains oder URLs weiterleiten.
Die am häufigsten genutzten Funktionen sind:
- Weiterleitungen
- Passwort/IP-gesperrte Bereiche
- Caching Einstellungen treffen
Inhaltsverzeichnis:
- 1. .htaccess Datei erstellen & richtig verwenden
- 1.1 Wo muss die .htaccess liegen?
- 1.2 Wo finde ich die .htaccess bei WordPress?
- 1.3 Was macht die .htaccess, wenn ich eine Website aufrufe?
- 1.4 Wie lege ich eine .htaccess Datei an?
- 1.5 Was hat es mit dem “.” auf sich?
- 2. Wieso sehe ich meine .htaccess nicht?
- 3. Wann sollte ich die .htaccess verwenden?
- 4. Anwendungsbeispiele inkl. Code-Vorlagen
.htaccess Datei erstellen & richtig verwenden
ACHTUNG: Bevor du deine .htaccess Datei bearbeitest, solltest du unbedingt ein Backup der aktuellen Datei machen. Speichere einfach den Inhalt in einer lokalen Textdatei.
Ein einziger Tippfehler führt möglicherweise dazu, dass deine Website nicht mehr erreichbar ist.
Wenn du die neue .htaccess Datei hochgeladen hast, prüfe sofort, ob deine Website noch funktioniert. Wenn nicht, lade die alte Version hoch und deine Website ist sofort wieder erreichbar.
Wo muss die .htaccess liegen?
In der Regel befindet sich eine .htaccess Datei im Hauptverzeichnis der Website. Die Einstellungen sind in diesem Verzeichnis und in allen Unterverzeichnissen wirksam. Weitere .htaccess Dateien können aber auch in jedem beliebigen Unterverzeichnis erstellt werden. Diese überschreiben dann die Einstellungen der übergeordneten Datei.
Wo finde ich die .htaccess bei WordPress?
Die .htaccess Datei wird bei der WordPress Installation automatisch erstellt. Du findest sie im Hauptverzeichnis deiner WordPress Website, also im /www/ Verzeichnis. Wenn du WordPress in einem Unterverzeichnis installiert hast, findest du die .htaccess dort.
Was macht die .htaccess, wenn ich eine Website aufrufe?
Wenn du eine Adresse aufrufst, wird die .htaccess für jede einzelne Komponente der Webseite durchlaufen. Beim Aufruf dieses Guides werden insgesamt 43 Dateien geladen:
- 1 HTML Datei
- 15 CSS Dateien
- 3 Schrift Dateien
- 8 Javascript Dateien
- 16 Grafiken
Bei jeder einzelnen Datei wird die .htaccess ausgewertet und entsprechend gehandelt.
Wie lege ich eine .htaccess Datei an?
- Öffne einen Texteditor. Verwende unter Windows z. B. den “Editor” oder “Notepad”. Es muss sich um einen reinen Texteditor handeln. Verwende nicht “Word” oder ähnliche Textverarbeitungs-Programme, welche auch die Zeichenformatierung speichern.
- Inhalte einfügen: Füge die gewünschten Code-Zeilen ein. Weiter unten findest du Beispiele für verschiedene Anweisungen.
- Speichere die Datei mit dem Namen “.htaccess” ab. Wichtig ist der Punkt vor dem Namen und dass du die Datei ohne Dateiendung erstellst. Wenn dein Editor nur Dateien mit Dateiendung zulässt, speichere die Datei als .txt ab und entferne danach die Endung.
Es kann sein, dass der Datei Explorer die .htaccess nicht anzeigt. - Lade die Datei per FTP in das gewünschte Verzeichnis, z. B: /www/
Es kann sein, dass das FTP Programm die .htaccess nicht anzeigt. - Überprüfe, ob die gewünschten Änderungen funktionieren.
ACHTUNG: Achte bei deiner .htaccess Datei auf eine 100% richtige Schreibweise. Andernfalls liefert deine Website einen “500 Internal Server Error” - einen unerwarteten Serverfehler. Prüfe sofort nach dem Hochladen, ob die Website und die Änderungen wie gewünscht funktionieren.
Als alldomains.hosting Kunde kannst du die Datei auch direkt im Dateimanager des Hosting Control Panels erstellen und bearbeiten.
Was hat es mit dem “.” auf sich?
Bei Unixsystemen sind Dateinamen mit einem vorangestellten Punkt üblich. Es handelt sich dabei um versteckte Dateien.
Wie die versteckten Dateien funktionieren und warum wir sie brauchen, kannst du in diesem Wikipedia Artikel lesen.
Wieso sehe ich meine .htaccess nicht? (Filezilla & Windows Explorer)
Dateien, die mit einem Punkt ( . ) beginnen, sind in den meisten Dateimanagern standardmäßig verborgen. In der Regel gibt es aber eine Einstellung, welche die versteckten Dateien anzeigt.
In Filezilla findest du diese Einstellungen unter “Server” -> “Auflistung versteckter Dateien erzwingen”.
Im Windows Explorer findest du versteckte Dateien unter “Ansicht” -> “Ausgeblendete Elemente”.
Sollte ich die .htaccess benutzen?
Wenn du deine Website auf einem “normalen” Shared Hosting betreibst, ist die .htaccess deine einzige Option.
Wenn du aber einen eigenständigen Webserver betreibst, kannst du die Einstellungen auch in der httpd.conf tätigen.
Mit dieser kannst du ebenfalls das Verhalten des Webservers beeinflussen. Es benötigt aber einen Neustart des Webservers, um Einstellungen zu übernehmen.
Anwendungsbeispiele inkl. Code-Vorlagen
- 4.1 Weiterleitung mittels .htaccess
- 4.2 IP-gesperrten Bereich einrichten
- 4.3 Fehlerseiten definieren
- 4.4 Options +Indexes - Dateien im Verzeichnis auflisten
- 4.5 DirectoryIndex - Startseite festlegen
- 4.6 Browser Caching aktivieren
- 4.7 Bots & unerwünschte Besucher blockieren
- 4.8 Zeitzone des Webservers festlegen
- 4.9 Passwortgeschützter Bereich
Weiterleitung mittels .htaccess:
Was sind 301 und 302 Weiterleitungen?
301 und 302 sind HTTP Status Codes. Sie werden beim Aufrufen einer Webseite an den Browser gesendet und geben diesem eine Rückmeldung zum Aufruf der Domain.
301 und 302 sind Status Codes für Umleitungen. Sie geben an, ob eine Weiterleitung temporär oder permanent ist.
301 Moved Permanently:
Die Anfrage wird an die angegebene URL weitergeleitet. Auch Suchmaschinen erkennen die Änderung und tauschen gegebenenfalls die alte durch die neue URL aus.
Wann soll ich einen 301 Redirect machen?
Ein 301 Redirect sollte nur verwendet werden, wenn man eine Seite wirklich permanent an eine andere URL weiterleitet. Also zum Beispiel beim Umzug auf eine ganz andere Domain:
RewriteEngine On
#Externe Weiterleitung
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^newdomain.com$
RewriteRule (.*)$ https://olddomain.com/$1 [R=301,L]
Oder auch bei einem internen Umzug auf eine andere URL:
#Interne Weiterleitung
Redirect 301 mydomain.com/oldurl mydomain.com/newurl
302 Found (früher Moved Temporarily):
Die Anfrage wird an die angegebene URL weitergeleitet. Die Weiterleitung ist aber nur temporär, die Indexierung soll bestehen bleiben.
Wann soll ich einen 302 Redirect machen?
302 Redirects sollen nur für temporäre Weiterleitungen verwendet werden.
#Externe Weiterleitung
Redirect 302 olddomain.com newdomain.com
WWW Weiterleitung:
Du kannst Besucher, die deine Domain ohne www. (also "example.com") aufrufen, auf die URL mit www. weiterleiten:
#auf www weiterleiten
RewriteCond %{HTTP_HOST} !^www.deinedomain.com$ [NC]
RewriteRule ^(.*)$ http://www.deinedomain.com$1 [L,R=301]
https:// Weiterleitung
Wenn du willst, dass deine Besucher nur auf einer SSL gesicherten Version deiner Seite sein können, kannst du das mit dieser Codevorlage machen:
#auf SSL weiterleiten
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
IP gesperrten Bereich einrichten
Für interne Mitarbeiterbereiche ist es optimal, eine IP-Sperre einzurichten. Die Seite ist dann nur über das interne Netzwerk erreichbar:
#IP Sperre
order allow,deny
deny from IP-Adresse
Fehlerseiten definieren
Wenn du eine Fehlerseite erstellt und auf deinen Webspace hochgeladen hast, kannst du diese mit Hilfe der .htaccess aktivieren.
Eine 404 Fehlerseite im Pfad “/pfad_zur_fehlerseite.html” erstellst du so:
ErrorDocument 404 /pfad_zur_fehlerseite.html
Options +Indexes - Dateien im Verzeichnis auflisten
Wenn du in einem Verzeichnis deines Webspaces Dateien auflisten willst (z. B. um sie zum Download anzubieten), kannst du dies mit diesem Codebeispiel machen:
#Dateien auflisten
Options +Indexes
DirectoryIndex - Startseite festlegen
Mit der DirectoryIndex Option legst du die Startseite für ein Verzeichnis fest. Die Anweisungen sind auch für die jeweiligen Unterverzeichnisse gültig. Standardmäßig lautet die Startseite index.html.
Um zum Beispiel die index.php vor der start.html vor der index.html aufzurufen, kannst du diesen Eintrag hinzufügen:
#DirectoryIndex
DirectoryIndex index.php start.html index.html
Browser Caching aktivieren
Wenn ein Seitenbesucher deine Webseite aufruft, muss der Browser zuerst die Website-Daten herunterladen. Das dauert je nach Internetanbindung des Besuchers einige Zeit.
Damit beim nächsten Aufruf nicht jede einzelne Datei neu geladen werden muss, kannst du dem Browser des Besuchers mit Hilfe dieses Codes mitteilen, dass er die Website-Daten lokal zwischenspeichern soll. Für jeden Dateityp kannst du einen Zeitraum festlegen.
# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive on
# default expiry times.
ExpiresDefault "access plus 2 days"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/svg+xml "access 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/ico "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 600 seconds"
</IfModule>
# END Expire headers
Bots & unerwünschte Besucher blockieren
Deine Website wird täglich von vielen Bots aufgerufen. Manche können deine Aufrufzahlen verfälschen oder die Ladezeit verschlechtern.
Hier lernst du, wie du mit Zugriffskontrollen Bots & unerwünschte Besucher fern hältst.
Hier lernst du, Besucher von bestimmten Domains auszusperren.
Zeitzone des Webservers festlegen
Wenn die Zeitzone deines Webservers falsch ist, kannst du die richtige Zeitzone mit diesem Befehl festlegen:
SetEnv TZ Europe/Berlin
Passwortgeschützter Bereich
Wie du ein bestimmtes Verzeichnis deiner Webseite mit einem Passwort schützt, kannst du in diesem Guide über Zugriffskontrolle lernen.