Seite wählen

.htaccess Copy & Paste Cheatsheet

Auf dieser Seite finden Sie die aus meiner Sicht wichtigsten .htaccess-Befehle.

Redirect mit .htaccess

Die .htaccess eignet sich sehr gut zum Erstellen von Redirects. Besonders permanente Weiterleitungen (= 301 Redirects) sind sehr einfach zu erstellen und sind gerade aus SEO-Sicht zu bevorzugen.

www- auf nicht-www-Version weiterleiten

Ich bevorzuge bei Webseiten immer eine URL ohne www. Nicht nur weil das genau genommen eigentlich eine Subdomain ist, sondern weil es meiner Meinung nach einfach aufgeräumter, ordentlicher und besser aussieht. Damit der Benutzer nicht eine Fehlerseite präsentiert bekommt oder Google sowohl die Version mit als auch ohne www indexiert, verwende ich einen 301 Redirect (301 ist der HTTP-Statuscode der für eine permanente Weiterleitung steht).

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

Redirect einer gesamten Domain

Sollten Sie eine neue Domain haben, können Sie mit den folgenden Befehlszeilen die gesamte Webseite mit allen Unterseiten auf die neue Domain weiterleiten. Da Google ein derartiges Vorgehen bei einem Umzug einer Webseite sogar empfiehlt, werden auch die Rankings der alten Domain von der neuen übernommen.

RewriteEngine on
RewriteRule (.*) http://neue-domain.tld/$1 [R=301,L]

Redirect einzelner (Unter)seiten

Sollten Sie einzelne URLs umleiten wollen, können Sie das mit den folgenden Zeilen in der .htaccess erledigen. Zu beachten ist hier lediglich, dass von der alte Seite der relative Pfad und von der neuen Seite die gesamte URL angegeben wird.

RewriteEngine on
Redirect 301 /alte-seite.html http://domain.tld/neue-seite.html

Besonderheit bei der Weiterleitung

Wollen Sie ausschließlich die Hauptseite (auf dieser Webseite wäre das https://pugstaller.com/) weiterleiten, wäre der folgende .htaccess-Eintrag fehlerhaft:

RewriteEngine on
Redirect 301 / http://domain.tld/neue-hauptseite.html

Verwenden Sie stattdessen die folgenden Zeilen für eine korrekte Weiterleitung (auch wenn sich keine index.html in Ihrem Hauptverzeichnis befindet):

RewriteEngine on
Redirect 301 /index.html http://domain.tld/neue-hauptseite.html

Redirect mehrerer (Unter)seiten

Funktioniert genauso wie die Weiterleitung einer einzelnen (Unter)seite, nur eben mit mehreren Zeilen (pro Zeile eine Weiterleitung).

RewriteEngine on
Redirect 301 /alte-seite1.html http://domain.tld/neue-seite1.html
Redirect 301 /alte-seite2.html http://domain.tld/neue-seite2.html
Redirect 301 /alte-seite3.html http://domain.tld/neue-seite3.html

Bessere Ladezeiten mit .htaccess

Neben den Weiterleitungen bietet die .htaccess auch die Möglichkeit die Ladezeit einer Webseite zu senken. Je nachdem, wie der Server bereits konfiguriert ist, können die folgenden .htaccess-Befehle die Performance erheblich verbessern.

Komprimieren der Dateien

Die folgenden .htaccess Befehle sorgen dafür, dass die gängigsten Dateitypen via Gzip komprimiert und an den Besucher der Webseite übermittelt werden. Da das die Größe der Dateien und dadurch die Ladezeit verringert, beschleunigt dies die meisten Webseiten.

AddOutputFilterByType DEFLATE application/atom+xml \
                              application/javascript \
                              application/json \
                              application/ld+json \
                              application/rss+xml \
                              application/vnd.ms-fontobject \
                              application/x-font-ttf \
                              application/x-web-app-manifest+json \
                              application/xhtml+xml \
                              application/xml \
                              font/opentype \
                              image/svg+xml \
                              image/x-icon \
                              text/css \
                              text/html \
                              text/plain \
                              text/x-component \
                              text/xml

ETags deaktivieren

Da ich weiter unten noch zum Punkt expires headers komme und ETags einfach nicht mehr aktuell sind, können wir diese mit nur wenigen Zeilen deaktivieren.

Header unset ETag
FileETag None

Browser Caching richtig nutzen

Damit Dateien die bereits vom Besucher geladen wurden, und sich in der Zwischenzeit nicht geändert haben, nicht erneut übermittelt werden müssen, verwenden wir die sogenannten expires headers. Diese erlauben uns für jeden Dateityp eine Dauer festzulegen, bis eine Datei dieses Typs neu geladen werden muss. Das spart nicht nur einiges an unnützen Dateitransfers sondern lässt die Webseite auch schneller laden.
Je nachdem welche Dateitypen auf Ihrer Webseite genützt werden, können Sie hier die eine oder andere Zeile entfernen.

ExpiresActive on
ExpiresDefault "access plus 1 month"

# CSS
ExpiresByType text/css "access plus 1 year"

# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"

# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/x-icon "access plus 1 week"

# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"

# HTML
ExpiresByType text/html "access plus 0 seconds"

# JavaScript
ExpiresByType application/javascript "access plus 1 year"

# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"

# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"

# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"

# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"

Mehr Sicherheit dank .htaccess

Eigentlich sollte die Sicherheit an erster Stelle stehen, tut es aber auf dieser Seite, zumindest was die Reheinfolge betrifft, nicht.
Dennoch sollte so manche der folgenden Ergänzungen in Ihrer .htaccess zu finden sein. Es kommt aber wie immer auf die Voreinstellung des Server an, welche oder ob Sie überhaupt einen der folgenden Befehle benötigen.

Directory Browsing deaktivieren

Durch aktiviertes Directory Browsing werden dem Besucher Ihrer Webseite alle Inhalte eines Ordners gezeigt, insofern dieser Ordner keine Datei namens index.html enthält. Das ist zwar für Fileserver durchaus praktisch, für eine herkömmliche Webseite aber eher unangenehm und kann ein Sicherheitsrisiko darstellen. Aus diesem Grund ist Directory Browsing bei vielen Webhosting-Anbietern per Standard deaktiviert.
Sollte dies nicht der Fall bei Ihrem Webserver sein, fügen Sie einfach die folgenden Zeilen in Ihrer .htaccess-Datei ein:

Options -Indexes

Wollen Sie hingegen Directory Browsing aktivieren, da Sie beispielsweise einen Fileserver betrieben oder nichts dagegen haben wenn jemand in Ihren Ordnern herumstöbert, können Sie das folgendermaßen aktivieren:

Options +Indexes

Zugriff auf Dateien blockieren

Auch wenn es nicht best practice ist, Dateien auf einem Webserver zu speichern, die für niemanden bestimmt sind, kann das dennoch passieren. Um vor solchen Pannen geschützt zu sein, können Sie mit diesen .htaccess-Anweisungen den Zugang zu Dateien mit gewissen Dateiendungen unterbinden.
Hier sind unter anderem Dateiendungen von Logfiles, Datenbanken, Sicherungsdateien und bearbeitbaren Bilddateien aufgelistet. Sie können die Liste aber gerne verkürzen oder ergänzen.


# Apache < 2.3

Order allow,deny
Deny from all
Satisfy All

# Apache ≥ 2.3

Require all denied

Quelle: https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess (Der Großteil zumindest)