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.3Require all denied
Quelle: https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess (Der Großteil zumindest)