Ihr Browser ist veraltet
Um sicher im Internet zu surfen und moderne Websites richtig darzustellen, empfehlen wir Ihnen ein Update.
Hier auf Updates prüfen
schließen

18.10.2023

Weiterleitungen mit .htaccess

Weiterleitungen mit .htaccess

Wer schon einmal mit Webservern, insbesondere Apache-Servern, zu tun hatte, wird sie kennen: die .htaccess-Datei. Als Konfigurationsdatei können mit ihr unter anderem Zugriffsberechtigungen verwaltet, Weiterleitungen eingerichtet und Regeln im Fall des Auftretens von Fehlermeldungen eingerichtet werden. Folgend werden die Weiterleitungen mittels der .htaccess weiter thematisiert.

Wofür braucht es Weiterleitungen?

Doch wofür braucht es überhaupt solche Weiterleitungen? Sind Ressourcen nicht mehr an ihrer ursprünglichen Stelle zu finden bzw. nicht mehr unter der gewohnten URL, müssen die Besucher zur neuen Adresse weitergeleitet werden, sollten sie noch immer die Veraltete aufrufen wollen.

Solche Umleitungen können server- oder clientseitig erfolgen; mit der .htaccess bewegen wir uns auf der Server-Seite.

Oft genutzte Weiterleitungen:

  • Weiterleitung einer einzelnen Seite

  • von HTTP auf HTTPS

  • ohne www auf www oder andersherum

Bei jeder Weiterleitung wird vom Server ein HTTP Status Code an den Client zurückgesendet.

So werden beispielsweise zeitlich begrenzte und permanente Weiterleitungen unterschieden. Hier geben die HTTP-Statuscodes 3xx detaillierte Auskunft. Für permanente Weiterleitungen wird zum Beispiel die 301 genutzt, für vorübergehende hingegen die 302.

Voraussetzungen

Freischaltung der .htaccess

Um eine .htaccess Datei nutzen zu können, muss die Berechtigung in der zentralen Konfigurationsdatei httpd.conf freigegeben werden.

NCSA-kompatible Webserver

Die textbasierte .htaccess ist spezifisch für NCSA-kompatible Webserver, wie auch Apache einer ist. So kommt die Konfigurationsdatei auch nur dort vor.

Compiler-Engines

Standardmäßig ist das Basis-Modul mod_alias aktiv. Mit der Erweiterung mod_rewrite sind spezifischere Rewrite-Regeln möglich. mod_rewrite kann in der httpd.conf für die Nutzung aktiviert werden und innerhalb der .htaccess-Datei mittels RewriteEngine on eingeschaltet werden. Dieser Befehl muss einmalig vor den Weiterleitungen stehen, damit diese auch ausgeführt werden.

Erstellen einer .htaccess

Gehen wir einmal davon aus, dass alle oben genannten Voraussetzungen erfüllt sind und das Modul mod_rewrite aktiv ist – dann können Weiterleitungsregeln wie folgt aussehen. Fall es noch keine .htaccess auf dem Server gibt, kann einfach eine mittels eine Plain-Text-Datei erstellt werden, beispielsweise mit einem Code-Editor oder dem Editor von Windows.

Einzelne Seiten bei gleich bleibender Domain

Ändert sich beispielsweise der Permalink oder Dateiname einer Seite, sollte eine Weiterleitung auf die neue URL eingerichtet werden. Hier zu wird der Statuscode angegeben, welcher an den Client zurückgegeben werden soll, der relative Pfad der alten Seite sowie die absolute URL der Ziel-Seite.

Redirect 301 /alter-name
http://www.beispiel.com/neuer-name

Alternativ kann auch folgende Direktive verwendet werden – hierbei wird der 308er Code zurückgegegben:

RedirectPermanent /alter-name http://www.beispiel.com/neuer-name

SSL Weiterleitungen

Um alle Anfragen über die gesicherte Verbindung über den HTTPS Port 443 laufen zu lassen, kann die Regel wie folgt aussehen:

RewriteCond %{SERVER_PORT} !=443
RewriteRule
^(.*)$ https://www\.beispiel\.de/$1 [L,R=301],

Weiterleitung immer auf www

Standardmäßig ist eine Website mit und auch ohne www zu erreichen. Da Suchmaschinen Domains mit und ohne www jedoch als unterschiedliche Seiten wertet, kann sich das somit durch den als Duplicate Content gewerteten Inhalt negativ auf die SEO Werte auswirken. Um dies zu vermeiden sollte entweder eine Weiterleitung der Domain ohne www auf die mit oder umgekehrt eingerichtet werden.

Folgend ein Beispiel für die Weiterleitung auf die Domain mit www:

RewriteCond %{HTTP_HOST} ^beispiel\.de$ [NC]
RewriteRule
^(.*)$ https://www.beispiel.de/$1 [L,R=301]

Achtung: Server sind sehr syntax-sensitiv und so kann ein kleiner Tippfehler innerhalb der Datei oder fehlerhafter Dateiname zu einem Server Error 500 führen – die komplette Seite ist in dem Fall nicht aufrufbar.

Syntax und Parameter der mod-rewrite

Folgend eine Auswahl an relevanten Ausdrücken:

Ausdruck Definition
RewriteCond Der nachfolgende Inhalt definiert die Bedingung für das Greifen der Regel
RewriteRule Der nachfolgende Inhalt definiert was passieren soll, wenn die Bedingung unter RewriteCond erfüllt ist
%{name} Kann beispielsweise den Hostnamen oder Server Port beinhalten – hiermit wird über die Umgebungsvariable weiter eingeschränkt, was genau überprüft werden soll
! Negation des nachfolgenden Ausdrucks.
^ Markiert den Start eines Ausdrucks
$ Markiert das Ende eines Ausdrucks
[NC] Groß- und Kleinschreibung wird ignoriert
L Steht ein L am Ende einer RewriteRule in der eckigen Klammer, wird nach dieser keine weitere ausgeführt
R Mit der Angabe des R wir die Möglichkeit geboten den vom Server zurück gelieferten Status Code zu steuern.

Redirects via PHP oder .htacces?

Eine andere Möglichkeit Weiterleitungen einzurichten bietet PHP. Für den HTTP Client, den Nutzer am Endgerät, ist es nicht ersichtlich, warum ein Server einen drei-hunderter-Code ausgibt. So können auch Suchmaschinen-Crawler nicht feststellen, ob die Redirects via PHP eingeleitet werden oder ob sie in einer .htaccess Konfigurationsdatei festgeschrieben sind. Bei Seiten mit viel Traffic können Weiterleitungen per PHP diese jedoch verlangsamen, da bei jedem Aufruf der PHP Interpreter ausgeführt wird. Die .htaccess Datei wird vor der PHP Datei verarbeitet, doch der zeitliche Versatz ist meist so gering, dass es nicht auffällt.

Quellen

https://wiki.selfhtml.org/wiki/Webserver/htaccess

https://httpd.apache.org/docs/current/howto/htaccess.html

https://www.redirect-htaccess.de/redirects

https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

Kontakt

Für Ihre Fragen, Anregungen und Anmerkungen haben wir immer ein offenes Ohr.

Sie können uns natürlich auch telefonisch erreichen:
034298 / 208 478

Erfahrungen & Bewertungen zu norules-webdesign