Anleitung für Umleitungen mit Apache

Wir helfen Ihnen Apache-Umleitungen auf CentOS 7 und Ubuntu 14.04 zu verstehen und zu konfigurieren. Apache-Umleitungen sind für eine Vielzahl von Situationen nützlich, unter Anderem für das Umleiten von Besuchern von der HTTP- zu HTTPS-Version Ihrer Website, das Umleiten von Datenverkehr von einer WWW zu einer Nicht-WWW-URL, oder das Ändern von Website- oder Verzeichnisnamen.

    Anforderungen

    • Linux-Server mit CentOS 7 oder Ubuntu 14.04
    • Apache ist installiert und wird ausgeführt

    Dedicated Server von IONOS

    Hardware trifft Cloud: Dedicated Server mit Cloud-Integration und mit minutengenauer Abrechnung, inklusive persönlichem Berater!

    24/7 Support
    Unbegrenzter Traffic
    SSL Zertifikat

    301 Permanente vs. 302 Temporäre Umleitung

    Der Hauptunterschied zwischen einer permanenten (301) und einer Temporären (302) Umleitung hat mit der SEO der Website zu tun. Eine 301 permanente Umleitung ist aus Sicht der SEO weitaus wünschenswerter.

    Suchmaschinen-Crawler behandeln eine 302-Umleitung als temporär.

    Wenn ein Suchmaschinen-Crawler auf eine 302-Umleitung trifft, notiert er sich die neue Adresse und geht weiter. Abhängig vom Crawler kann er die URL für einen Wiederholungsbesuch irgendwann in der Zukunft markieren.

    Der Crawler tut dies, weil eine 302-weiterleitung anzeigen soll, dass die Umleitung nur temporär ist, und die "echte" URL bald wieder online ist.

    Eine 301-Umleitung bewahrt Ihr SEO-Ranking.

    Im Vergleich dazu, trifft ein Suchmaschinen-Crawler auf eine 301-Umleitung, versteht der Crawler, dass es sich um eine permanente Umleitung handelt. Er notiert also nicht nur die neue URL, sondern leitet auch den Prozess der Übertragung eines beliebigen Page-Rank-Wertes von der alten auf die neue URL ein.

    Dieser Transferprozess ist entscheidend für SEO-Zwecke. Dies erlaubt Ihnen, die URLs einer Website zu ändern, ohne das wertvolle SEO-Ranking zu verlieren, das die Seiten erlangt haben.

    Erzwingen Sie immer eine 301-Umleitung.

    Daher sollten Sie bei der Erstellung einer Umleitung immer angeben, dass es sich um eine 301-Umleitung handelt. In vielen Situationen, wenn der Umleitungstyp nicht angegeben ist, wird er standardmäßig auf 302 umgeleitet.

    Grundlagen 301-Umleitung

    Wenn Sie nur eine (oder eine kleine Anzahl von) URLs umleiten müssen, ist es einfach, diese einzeln in die Apache-Konfigurationsdatei der Website aufzunehmen.

    Einfache URL-Umleitung

    Eine 301-Umleitung verwendet die Redirect-Directive in einer Apache-Konfigurationsdatei mit folgender Syntax:

    Redirect 301 [old URL] [new URL]

    Nehmen wir an, die Eigentümer von example.com haben beschlossen, den Blog ihrer Website von einem Unterverzeichnis (http://example.com/blog) in eine eigene kanonische Domain (http://blog.example.com) zu verschieben. Die Redirect-Richtlinie würde lauten:

    Redirect 301 /blog http://blog.example.com

    Die neue URL kann auch eine externe URL sein, wie in diesem Beispiel, das den Traffic von example.com/store auf eine Amazon-Shop-Seite umleitet:

    Redirect 301 /store https://www.amazon.com/s?marketplaceID=AT32311PKK0DER&me=ASEVS99O66653FS73&merchant=ASEV33F6FS73&redirect=true

    Dies ermöglicht es dem Besitzer der Website, "Besuchen Sie example.com/store in meinem Amazon-Shop einzukaufen" zu schreiben, anstatt eine lange, komplizierte URL weitergeben zu müssen.

    Die Redirect-Direktive muss in den VirtualHost-Befehlsblock in der Hauptkonfigurationsdatei des Apache der Website aufgenommen werden.

    Diese Apache-Konfigurationsdatei ist in der Regel eine übliche Konvention:

    • CentOS 7 /etc/httpd/conf.d/example.com.conf
    • Ubuntu 14.04 /etc/apache2/sites-available/example.com.conf
    Hinweis

    Der Speicherort und der Dateiname der Apache-Konfigurationsdatei einer Website kann je nachdem, wie Sie oder Ihr Serveradministrator das Hosting eingerichtet haben, variieren.

    Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z.B. mit dem Befehl:

    • CentOS 7 sudo nano /etc/httpd/conf.d/example.com.conf
    • Ubuntu 14.04 sudo nano /etc/apache2/sites-available/example.com.conf

    Scrollen Sie durch die Datei, bis Sie den VirtualHost-Befehlsblock finden, der in etwa so aussehen wird:

    <VirtualHost *:80>
    ServerName example.com
        <Directory "/var/www/example.com/html">
        AllowOverride All
        </Directory>
    </VirtualHost>

    Fügen Sie die Redirect-Directive zum VirtualHost-Befehlsblock hinzu, aber stellen Sie sicher, dass sie außerhalb von Verzeichnisbefehlsblöcken platziert wird. Zum Beispiel:

    <VirtualHost *:80>
    ServerName example.com
    Redirect 301 /blog http://blog.example.com
        <Directory "/var/www/example.com/html">
        AllowOverride All
        </Directory>
    </VirtualHost>

    Speichern und beenden Sie die Datei, und starten Sie dann den Apache neu, damit die Änderungen wirksam werden:

    • CentOS 7 sudo systemctl Neustart httpd
    • Ubuntu 14.04 sudo Dienst apache2 Neustart

    Umleitung der WWW-Website-URL auf eine Nicht-WWW-Website-URL

    Es ist üblich, die WWW-Version einer URL über eine ServerAlias-Zeile in der Apache-Konfigurationsdatei der Website mit einem Alias auf die Nicht-WWWW-Version (oder umgekehrt) zu übertragen. Obwohl dies für Website-Besucher gut genug funktioniert, wird es aus SEO-Sicht nicht als "Best Practice" betrachtet.

    Die Verwendung von ServerAlias anstelle einer 301-Umleitung birgt das Risiko, dass die Website als "Duplicate Content" gekennzeichnet wird. Einige Suchmaschinen-Crawler erkennen nicht, dass www.example.com und example.com die gleiche URL sind.

    Es gibt keinen Unterschied aus SEO-Sicht zwischen der WWW- und Nicht-WWWW-Version Ihrer URL. Wichtig ist, dass Sie eine der URLs auswählen und konsequent anwenden.

    Hinweis

    Die folgenden Anweisungen leiten den Datenverkehr vom WWW auf die Nicht-WWWW-Version Ihrer URL um. Wenn Sie das Gegenteil bevorzugen (Umleitung des Datenverkehrs von der Nicht-WWWW-Version auf die WWW-Version), bearbeiten Sie einfach die Befehle nach Bedarf.

    Diese Redirect-Directive muss in einen neuen Virtual-Host-Befehlsblock in der Hauptkonfigurationsdatei des Apache der Website eingefügt werden.

    Diese Apache-Konfigurationsdatei findet sich konventionell an folgenden Speicherorten:

    • CentOS 7 /etc/httpd/conf.d/example.com.conf
    • Ubuntu 14.04 /etc/apache2/sites-available/example.com.conf
    Hinweis

    Der Speicherort und der Dateiname der Apache-Konfigurationsdatei einer Website kann je nachdem, wie Sie oder Ihr Serveradministrator das Hosting eingerichtet haben, variieren.

    Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z.B. mit dem Befehl:

    • CentOS 7 sudo nano /etc/httpd/conf.d/example.com.conf
    • Ubuntu 14.04 sudo nano /etc/apache2/sites-available/example.com.conf

    Scrollen Sie durch den Hauptbefehlsblock des Virtual Host, der wahrscheinlich so ähnlich aussehen wird:

    <VirtualHost *:80>
    ServerName example.com
        <Directory "/var/www/example.com/html">
        AllowOverride All
        </Directory>
    </VirtualHost>

    Wenn Sie in diesem Befehlsblock eine Zeile sehen, die wie folgt lautet:

    ServerAlias www.example.com

    Löschen Sie diese Zeile.

    Scrollen Sie zum Ende der Datei und fügen Sie unten einen neuen VirtualHost-Befehlsblock hinzu:

    <VirtualHost *:80>
      ServerName www.example.com
      Redirect 301 / http://example.com/
    </VirtualHost>

    Speichern und schließen Sie die Datei, und starten Sie dann den Apache neu, damit die Änderungen wirksam werden:

    • CentOS 7 sudo systemctl Neustart httpd
    • Ubuntu 14.04 sudo Dienst apache2 Neustart

    Einrichten von mod_rewrite und Allow in .htaccess-Dateien

    Für komplexere 301-Umleitungen ist das Apache-Modul mod_rewrite die beste Wahl. Dieses Modul ist schnell, flexibel und leistungsstark.

    Aktivieren Sie mod_rewrite auf CentOS 7

    mod_rewrite ist unter CentOS 7 standardmäßig aktiviert. Wenn Sie feststellen, dass es nicht aktiviert wurde, können Sie es aktivieren, indem Sie die Basis-Konfigurationsdatei des Moduls mit folgendem Befehl bearbeiten:

    sudo nano /etc/httpd/conf.modules.d/00-base.conf

    Fügen Sie die folgende Zeile hinzu oder deaktivieren Sie sie, wenn sie auskommentiert wurde:

    LoadModule rewrite_module modules/mod_rewrite.so

    Als nächstes aktivieren Sie die Verwendung von .htaccess-Dateien. Bearbeiten Sie dazu die Hauptkonfigurationsdatei des Apache für die Website.

    Diese Apache-Konfigurationsdatei ist üblicherweise /etc/httpd/conf.d/example.com.conf auf CentOS 7.

    Hinweis

    Der Speicherort und der Dateiname der Apache-Konfigurationsdatei einer Website kann je nachdem, wie Sie oder Ihr Serveradministrator das Hosting eingerichtet haben, variieren.

    Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z.B. mit dem Befehl:

    sudo nano /etc/httpd/conf.d/example.com.conf

    Scrollen Sie durch den Hauptbefehlsblock von VirtualHost, der wahrscheinlich so ähnlich aussehen wird:

    <VirtualHost *:80>
    ServerName example.com
        <Directory "/var/www/example.com/html">
        AllowOverride None
        </Directory>
    </VirtualHost>

    Ändern Sie im Verzeichnisblock AllowOverride von standardmäßig None auf All:

    AllowOverride All

    Wenn es keinen Directory-block im VirtualHost-Befehlsblock gibt, fügen Sie einen hinzu, der lautet:

         <Directory "/var/www/example.com/html">
             AllowOverride All
         </Directory>

    Achten Sie darauf, den richtigen Pfad zum Hauptverzeichnis Ihrer Website zu verwenden.

    Speichern und beenden Sie die Datei. Starten Sie den Apache neu, damit die Änderungen wirksam werden:

    sudo systemctl restart httpd 

    mod_rewrite auf Ubuntu aktivieren 14.04

    Um mod_rewrite zu aktivieren, verwenden Sie den Befehl:

    sudo a2enmod rewrite

    Dadurch wird das Modul aktiviert, wenn es nicht bereits aktiviert wurde. Starten Sie den Apache neu, damit die Änderungen wirksam werden:

    sudo service apache2 restart

    Als nächstes erlauben Sie die Verwendung von .htaccess-Dateien. Bearbeiten Sie dazu die Hauptkonfigurationsdatei des Apache für die Website.

    Diese Apache-Konfigurationsdatei befindet sich üblicherweise bei Ubuntu 14.04. /etc/apache2/sites-available/example.com.conf .

    Hinweis

    Der Speicherort und der Dateiname der Apache-Konfigurationsdatei einer Website kann je nachdem, wie Sie oder Ihr Serveradministrator das Hosting eingerichtet haben, variieren.

    Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z.B. mit dem Befehl:

    sudo nano /etc/apache2/sites-available/example.com.conf

    Scrollen Sie durch den Hauptbefehlsblock von VirtualHost, bis Sie den Verzeichnisbefehlsblock finden, der wahrscheinlich so ähnlich aussehen wird:

    <Directory /var/www/example.com/html/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>

    Ändern Sie AllowOverride vom Standard None auf All:

    AllowOverride All

    Wenn es keinen Directory-block im VirtualHost-Befehlsblock gibt, fügen Sie einen hinzu, der lautet:

    <Directory /var/www/example.com/html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>

    Achten Sie darauf, den richtigen Pfad zum Hauptverzeichnis Ihrer Website zu verwenden.

    Speichern und beenden Sie die Datei. Starten Sie den Apache neu, damit die Änderungen wirksam werden:

    sudo service apache2 restart

    Erstellen einer .htaccess-Datei

    Nachdem Sie Ihre Website so konfiguriert haben, dass sie mod_rewrite verwendet und .htaccess-Dateien zulässt, ist es an der Zeit, in das Dokumentenverzeichnis (Hauptverzeichnis) Ihrer Website zu wechseln und eine.htaccess-Datei zu erstellen.

    Dieser Dateiname muss genau wie abgebildet erstellt werden, mit einem Punkt am Anfang des Namens. Sie müssen den Apache nicht neu starten, nachdem Sie Änderungen an einer .htaccess-Datei vorgenommen haben.

    Wechseln Sie zunächst zum Beispiel ins Hauptverzeichnis Ihrer Website:

    cd /var/www/example.com/html

    Als nächstes erstellen Sie hier die .htaccess-Datei mit dem Befehl:

    sudo nano .htaccess

    In dieser Datei geben Sie alle Ihre mod_rewrite-Konfigurationen an. Beginnen wir mit einem einfachen Test, um sicherzustellen, dass alles richtig funktioniert.

    Fügen Sie die folgenden Zeilen zu dieser Datei hinzu:

    RewriteEngine on
    RewriteRule ^hello.html$ goodbye.html 

    Diese Regel leitet Anfragen für hello.html auf die Seite goodbye.html um.

    Speichern und beenden Sie die Datei.

    Als nächstes erstellen Sie die beiden Dateien mit folgenden Befehlen:

    sudo echo "Hello" >> hello.html
    sudo echo "Goodbye" >> goodbye.html

    Besuchen Sie nun die Datei hello.html in einem Browser. Sie sollten in die Datei "goodbye.html" umgeleitet werden, an die Stelle, wo "goodbye" steht.

    Mehrere Domains auf die gleiche Website umleiten

    Es gibt mehrere Gründe, warum Sie mehrere URLs auf dieselbe Website umleiten sollten.

    • Wenn Ihre Hauptseite example.com ist, können Sie auch example.net und example.org kaufen, um den Namensraum zu erfassen.
    • Es ist eine gute Praxis, häufige Rechtschreibfehler Ihres Domainnamens wie exampl.com oder exmple.com einzuschließen.
    • Sie können auch Variationen Ihres Domainnamens besitzen, wie the-example.com oder my-example.com.

    Obwohl Sie diese Domainnamen einfach auf Ihre Hauptseite umleiten können, ist es ratsam, 301-Umleitungen einzurichten, um ihre gesteckten Ziele zu erreichen. Das ist es was Google unter anderem empfiehlt.

    Um eine 301-Umleitung einzurichten, um mehrere Domainnamen auf dieselbe Website zu verweisen, richten Sie zunächst mod_rewrite und .htaccess-Dateien ein und fügen Sie dann die folgenden Zeilen zur .htaccess-Datei der Website hinzu:

    RewriteEngine on
    RewriteCond %{HTTP_Host} ^(www\.)?example\.net$ [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [R=301]

    Dadurch wird der Datenverkehr von example.net nach example.com umgeleitet.

    Diese Regeln müssen an Ihre Domainnamen und die gewünschten Ergebnisse angepasst werden. Um beispielsweise den Datenverkehr auf die WWW-Version der URL (www.example.com) umzuleiten, würden Sie Folgendes verwenden:

    RewriteEngine on
    RewriteCond %{HTTP_Host} ^(www\.)?example\.net$ [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]
    Domain Check
    • .de
    • .com
    • .shop
    • .net
    • .online

    Umleitung von Besuchern auf die SSL-gesicherte Version Ihrer Website

    Wenn Sie sichergehen möchten, dass der gesamte Datenverkehr auf Ihrer Website über SSL gesichert ist, sollten Sie stattdessen alle Anfragen nach example.com URLs an example.com weiterleiten.

    Um eine 301-Umleitung einzurichten, um Besucher an die HTTPS-Version einer Website zu senden, richten Sie zunächst mod_rewrite und .htaccess-Dateien ein und fügen Sie dann die folgenden Zeilen zur.htaccess-Datei der Website hinzu:

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://example.com$1 [R=301,L]

    Wenn Sie es vorziehen, den Traffic auf die WWW-Version Ihres Domainnamens umzuleiten, verwenden Sie stattdessen die folgenden Regeln:

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://www.example.com$1 [R=301,L] 

    Umbenennen von Webseiten und Verschieben von Verzeichnissen

    Es gibt einige Situationen, in denen Sie eine bestehende Webseite oder ein bestehendes Verzeichnis umbenennen müssen. Dadurch werden alle Links, die auf diese Seite verweisen, unterbrochen, was nicht nur das Erlebnis des Besuchers ruiniert, sondern auch Ihre SEO beeinträchtigt.

    Nachdem Sie mod_rewrite und .htaccess-Dateien eingerichtet haben, verwenden Sie die folgenden Regeln in der.htaccess-Datei der betroffenen Website.

    Website umbenennen

    RewriteEngine on
    RewriteRule ^old-page.html$ /new-page.html [R=301]

    Verzeichnis umbenennen

    RewriteEngine on
    RewriteRule ^old-directory/ /new-directory/ [R=301]

    In den obigen Beispielen werden die Namen der Dateien und Verzeichnisse als Pfad relativ zum Hauptverzeichnisder Website angegeben. Es gibt drei Optionen für Pfade:

    • Ein vollständiger Dateisystempfad (/var/wwww/html/new-page.html)
    • Ein Webpfad relativ zum Hauptverzeichnis (/new-page.html)
    • Eine absolute URL (http://example.com/new-page.html)

    Weitere Details zu mod_rewrite

    mod_rewrite verwendet reguläre Ausdrücke, um URLs abzugleichen und zu ersetzen. Um mod_rewrite zu aktivieren, muss die erste Zeile der Regeln in der .htaccess-Datei immer so aussehen:

    RewriteEngine on

    Das Herzstück von mod_rewrite sind RewriteRules, oft in Verbindung mit einer RewriteCond.

    RewriteRule

    Eine RewriteRule besteht aus drei Teilen:

    RewriteRule [pattern] [substitution] [flags]

    Das Muster wird mit Hilfe von regulären Ausdrücken erstellt.

    Folgende Ersetzungen können erfolgen:

    • Ein vollständiger Dateisystempfad (/var/wwww/html/blog/index.php)
    • Ein Webpfad relativ zum Hauptverzeichnis (/blog)
    • Eine absolute URL (http://example.com/blog/index.php)

    Das Flag ist optional. Einige der häufigsten sind:

    • L: Zeigt an, dass dies die letzte in einer Reihe von Regeln ist
    • R=301: Eine 301 Umleitung erzwingen
    • NC: Ignoriert die Groß-/Kleinschreibung, so dass die Regel nicht zwischen Groß- und Kleinschreibung unterscheidet

    Eine vollständige Liste der verfügbaren Flags finden Sie auf der offiziellen Apache-Website.

    Manchmal wird eine RewriteRule durch eine RewriteCond eingeleitet. Hier wird festgelegt, unter welchen Bedingungen die RewriteRule verwendet wird.

    RewriteCond

    Eine RewriteCond besteht ebenfalls aus drei Teilen:

    RewriteCond [test string] [condition] [flags]

    Der Teststring ist typischerweise eine Servervariable mit dem Format %{VARIABLE NAME}.

    Es gibt drei Arten von Bedingungen: 

    • Ein regulärer Ausdruck
    • Ein Zeichenkettenvergleich
    • Ein Datei-/Pfad-Test

    Das Flag ist optional. Für die RewriteCond stehen drei Flags zur Verfügung:

    • NC: Ignoriert die Groß-/Kleinschreibung, so dass die Bedingung nicht zwischen Groß- und Kleinschreibung unterscheidet
    • ODER: Logisches "oder"
    • NV: "No Vary", der Headername wird nicht in den Vary-Antwortkopf eingefügt

    RewriteRule versus Umleitung

    Viele fragen sich, was der Unterschied zwischen RewriteRule und Umleitung ist. Beide können in einer.htaccess-Datei verwendet werden, um den Website-Verkehr umzuleiten.

    Der Hauptunterschied besteht darin, dass RewriteRule durch das Modul mod_rewrite und eine Umleitung (redirect) durhc mod_alias umgesetzt wird.

    mod_rewrite

    • Verwendet RewriteRule und RewriteCond.
    • Viel mächtiger, da es reguläre Ausdrücke verwendet, um URLs abzugleichen und zu ersetzen.
    • Kann schwieriger zu bedienen sein.
    • Möglicherweise nicht installiert oder standardmäßig aktiviert.

    mod_alias

    • Verwendet Redirect und RedirectMatch.
    •  Nicht so konfigurierbar.
    • Kann einfacher zu bedienen sein.
    • Ist in den meisten Apache-Installationen bereits standardmäßig aktiviert

    Ob Sie nun mod_rewrite- oder mod_alias-Regeln verwenden, Sie werden immer einen 301 Permanent Redirect erzeugen wollen.

    Günstige Webhosting-Pakete von IONOS!

    Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

    Kostenlose Domain
    SSL Zertifikat
    DDoS-Schutz

    Auf dem Laufenden bleiben?

    Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!