So erstellen Sie temporäre und permanente Weiterleitungen mit Apache

Einführung

Mit der HTTP-Umleitung können Sie eine Domain oder Adresse auf eine andere verweisen. Es gibt verschiedene Arten von Weiterleitungen, von denen jede für den Client-Browser eine andere Bedeutung hat. Die beiden häufigsten Typen sind temporäre und permanente Weiterleitungen.

Temporary Redirects (Antwortstatuscode * 302 gefunden *) sind nützlich, wenn eine URL vorübergehend von einem anderen Standort aus bereitgestellt werden muss. Wenn Sie beispielsweise eine Site-Wartung durchführen, möchten Sie möglicherweise eine temporäre Weiterleitung von Ihrer Domain auf eine Erklärungsseite verwenden, um Ihre Besucher darüber zu informieren, dass Sie in Kürze zurück sein werden.

Permanente Weiterleitungen (Antwortstatuscode * 301 dauerhaft verschoben *) teilen dem Browser andererseits mit, dass er die alte Adresse vollständig vergessen und nicht mehr versuchen soll, darauf zuzugreifen. Diese sind nützlich, wenn Ihr Inhalt dauerhaft an einen neuen Speicherort verschoben wurde, z. B. wenn Sie Domain-Namen ändern.

Sie können eine temporäre Umleitung in Apache erstellen, indem Sie dem Eintrag für den virtuellen Host in der Serverkonfigurationsdatei eine Zeile wie die folgende hinzufügen:

Redirect

In ähnlicher Weise können Sie eine Zeile wie die folgende für eine permanente Umleitung verwenden:

Redirect permanent

In diesem Handbuch wird ausführlicher erläutert, wie die einzelnen Umleitungsarten in Apache implementiert werden, und es werden einige Beispiele für bestimmte Anwendungsfälle aufgeführt.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Lösung auf einen Blick

In Apache können Sie einfache einseitige Weiterleitungen mit der Direktive "+ Redirect " ausführen, die im Modul " mod_alias +" enthalten ist, das bei einer neuen Apache-Installation standardmäßig aktiviert ist. Diese Direktive akzeptiert mindestens zwei Argumente, die alte URL und die neue URL, und kann verwendet werden, um temporäre und permanente Weiterleitungen zu erstellen.

In der einfachsten Form können Sie eine temporäre Umleitung mit den folgenden Zeilen in Ihrer Serverkonfiguration durchführen:

Temporäre Weiterleitung mit Weiterleitung

<VirtualHost *:80>
   ServerName www.domain1.com
   Redirect / http://www.domain2.com
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain2.com
   . . .
</VirtualHost>

Diese Weiterleitung weist den Browser an, alle Anforderungen für "+ www.domain1.com " an " www.domain2.com +" weiterzuleiten. Diese Lösung funktioniert jedoch nur für eine einzelne Homepage, nicht für die gesamte Site.

Um mehr als eine Seite umzuleiten, können Sie die Direktive + RedirectMatch + verwenden, die regular expressions verwendet, um whole anzugeben Verzeichnisse statt nur einzelne Dateien. + RedirectMatch + stimmt mit Mustern für reguläre Ausdrücke in Klammern überein und verweist dann mit + $ 1 + expression auf den übereinstimmenden Text im Umleitungsziel, wobei + 1 + die erste Gruppe übereinstimmender Texte ist. In komplexeren Beispielen werden aufeinanderfolgende übereinstimmende Gruppen nacheinander nummeriert.

Wenn Sie beispielsweise jede Seite mit "+ www.domain 1.com " vorübergehend auf " www.domain 2.com +" umleiten möchten, können Sie Folgendes verwenden:

Temporäre Weiterleitung mit RedirectMatch

<VirtualHost *:80>
   ServerName www.domain1.com
   RedirectMatch ^/(.*)$ http://www.domain2.com/$1
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain2.com
   . . .
</VirtualHost>

Standardmäßig richten die Direktiven "+ Redirect " und " RedirectMatch " eine temporäre Umleitung ein. Wenn Sie eine permanente Umleitung erstellen möchten, können Sie dies tun, indem Sie an eine der folgenden Anweisungen " permanent +" anhängen:

Permanente Weiterleitungen

Redirect  / http://www.domain2.com
RedirectMatch  ^/(.*)$ http://www.domain2.com/$1

Sie können mit dem + mod_rewrite + Modul auch flexiblere und leistungsfähigere Weiterleitungen erstellen. Dies liegt außerhalb des Geltungsbereichs dieses Artikels, Sie können jedoch mit + mod_rewrite + unter https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on beginnen -ubuntu-14-04 [So richten Sie mod_rewrite für Apache ein].

Kommen wir zu einigen konkreten Beispielen.

Beispiel 1 - Umzug in eine andere Domain

Wenn Sie eine Webpräsenz eingerichtet haben und Ihre Domain in eine neue Adresse ändern möchten, ist es am besten, Ihre alte Domain nicht einfach aufzugeben. Lesezeichen für Ihre Website und Links zu Ihrer Website, die sich auf anderen Seiten im Internet befinden, werden unterbrochen, wenn Ihre Inhalte ohne Anweisungen für den Browser zum Auffinden des neuen Standorts ausgeblendet werden. Das Ändern von Domains ohne Umleitung führt dazu, dass Ihre Site Zugriffe von früheren Besuchern verliert.

In diesem Beispiel konfigurieren wir eine Umleitung von der alten Domain "+ domain1.com " auf die neue Domain " domain 2.com +". Hier werden permanente Weiterleitungen verwendet, da die alte Domain entfernt wird und der gesamte Datenverkehr von nun an zur neuen Domain geleitet werden soll.

Nehmen wir an, Sie haben Ihre Website so konfiguriert, dass sie von einer einzigen Domain mit dem Namen "+ domain1.com +" aus bedient wird, die in Apache bereits wie folgt konfiguriert ist:

/etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain1.com
   ServerAlias www.domain1.com
   DocumentRoot /var/www/domain1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Wir gehen auch davon aus, dass Sie Ihre zukünftige Version der Website bereits unter "+ domain2.com +" bereitstellen:

/etc/apache2/sites-available/domain2.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain2.com
   ServerAlias www.domain2.com
   DocumentRoot /var/www/domain2.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ändern Sie die Konfigurationsdatei für den virtuellen Host "+ domain 1.com ", um eine permanente Umleitung zu " domain 2.com +" hinzuzufügen:

/etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain1.com
   ServerAlias www.domain1.com
   DocumentRoot /var/www/domain1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Wir haben die oben genannte Umleitung mit der Direktive "+ RedirectMatch " hinzugefügt. Wir verwenden " RedirectMatch " anstelle eines einfachen " Redirect ", um sicherzustellen, dass alle Webseiten betroffen sind, nicht nur die Homepage. Der reguläre Ausdruck " ^ / (. *) $ " Stimmt mit allem nach dem " / " in der URL überein. Beispielsweise wird " http: // domain1.com / " zu " http: // domain2.com / " umgeleitet. Um die permanente Weiterleitung zu erreichen, fügen wir einfach " permanent " nach der Direktive " RedirectMatch +" hinzu.

Beispiel 2 - Erstellen einer dauerhaften Erfahrung trotz einzelner Seitennamenänderungen

Manchmal ist es erforderlich, die Namen einzelner Seiten zu ändern, die bereits veröffentlicht wurden und auf Ihrer Website Zugriffe erhalten haben. Das Ändern des Namens allein würde einen Fehler 404 Not Found für Besucher verursachen, die versuchen, auf die ursprüngliche URL zuzugreifen. Sie können dies jedoch vermeiden, indem Sie eine Umleitung verwenden. Dadurch wird sichergestellt, dass Personen, die Ihre alten Seiten mit einem Lesezeichen versehen oder über veraltete Links in Suchmaschinen gefunden haben, weiterhin auf die richtige Seite gelangen.

Stellen Sie sich vor, Ihre Website hatte zwei separate Seiten für Produkte und Dienstleistungen mit den Bezeichnungen "+ products.html" und "+ services.html". Jetzt haben Sie beschlossen, diese beiden Seiten durch eine einzige Angebotsseite mit dem Namen "+ offers.html " zu ersetzen. Wir werden eine einfache Weiterleitung für " products.html" und "+ services.html" zu "+ offers.html" konfigurieren.

Wir gehen davon aus, dass Sie Ihre Website wie folgt konfiguriert haben:

Angenommene ursprüngliche Konfiguration des virtuellen Hosts

<VirtualHost *:80>
   ServerName example.com
   . . .
</VirtualHost>

Das Konfigurieren der Weiterleitungen ist so einfach wie die Verwendung von zwei Weiterleitungs-Direktiven.

Weiterleitungen zur ursprünglichen Konfiguration hinzugefügt

<VirtualHost *:80>
   ServerName example.com



   . . .
</VirtualHost>

Die Direktive "+ Redirect " akzeptiert die ursprüngliche Adresse, die umgeleitet werden muss, sowie die Zieladresse einer neuen Seite. Da es sich hier nicht um eine vorübergehende Änderung handelt, haben wir in der Direktive auch " permanent +" verwendet. Sie können so viele Weiterleitungen verwenden, wie Sie möchten, um sicherzustellen, dass Ihre Besucher beim Verschieben von Websiteinhalten keine unnötigen Nicht gefunden-Fehler sehen.

Fazit

Sie haben jetzt das Wissen, Anfragen an neue Standorte umzuleiten. Stellen Sie sicher, dass Sie den richtigen Umleitungstyp verwenden, da eine falsche Verwendung temporärer Umleitungen Ihr Suchranking beeinträchtigen kann.

Es gibt mehrere andere Verwendungen von HTTP-Weiterleitungen, einschließlich des Erzwingens sicherer SSL-Verbindungen (d. H. Verwenden Sie "+ https" anstelle von "+ http" und stellen Sie sicher, dass alle Besucher nur auf der "+ www. +" - Adresse der Website landen.

Wenn Sie die Weiterleitungen richtig verwenden, können Sie Ihre aktuelle Webpräsenz nutzen und die Site-Struktur nach Bedarf ändern. Wenn Sie mehr darüber erfahren möchten, wie Sie Ihre Besucher umleiten können, finden Sie in Apache unter mod_alias und http: //httpd.apache.org/docs/current/mod/mod_rewrite.html[mod_rewrite] Abschnitte der offiziellen Dokumentation.