So leiten Sie www mit Apache unter CentOS 7 auf Nicht-www um

Einführung

Wenn Ihre Website oder Anwendung hinter einer Domain ausgeführt wird, ist es häufig wünschenswert, Ihren Benutzern auch den Zugriff über den einfachen Domainnamen und die Unterdomäne * www * zu ermöglichen. Das heißt, sie sollten in der Lage sein, Ihre Domain mit oder ohne das Präfix "http: // www. [Www.]" Zu besuchen, z. + example.com + oder + www.example.com + in einem Webbrowser und mit dem gleichen Inhalt dargestellt werden. Obwohl es eine Vielzahl von Möglichkeiten gibt, dies einzurichten, besteht die beste Lösung aus Gründen der Konsistenz und der Suchmaschinenoptimierung darin, die von Ihnen bevorzugte Domain ("plain" oder "www") auszuwählen und die andere Domain an die bevorzugte Domain weiterzuleiten. Diese Art der Umleitung wird als "Permanente Umleitung" oder "301-Umleitung" bezeichnet und kann einfach eingerichtet werden, indem Sie Ihre DNS-Ressourceneinträge und die Webserver-Software ordnungsgemäß konfigurieren.

In diesem Tutorial erfahren Sie, wie Sie eine WWW-URL zu einer nicht-WWW-URL umleiten, z. + www.example.com + bis + example.com +, mit Apache unter CentOS 7. Wir zeigen Ihnen auch, wie Sie von einer Nicht-WWW-URL zu http: // www [www] umleiten können. Die Ubuntu 14.04-Version dieses Tutorials ist hier unter https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-wwwwwith-apache-on-ubuntu-14-04 verfügbar ].

Wenn Sie diese Art der Weiterleitung mit Nginx als Webserver ausführen möchten, sollten Sie stattdessen diesem Lernprogramm folgen: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-nginx-on-centos-7 [So leiten Sie www mit Nginx unter CentOS 7 auf Nicht-www um].

Voraussetzungen

In diesem Lernprogramm wird davon ausgegangen, dass Sie über Superuser-Berechtigungen verfügen, d. H. + sudo + oder root auf dem Server, auf dem Apache ausgeführt wird. Wenn Sie das noch nicht eingerichtet haben, folgen Sie diesem Tutorial: Initial Server Setup on CentOS 7.

Es wird davon ausgegangen, dass Sie Apache (httpd) installiert haben. Wenn Sie dies noch nicht eingerichtet haben, finden Sie unter Apache tag mehrere Tutorials zu diesem Thema.

Sie müssen in der Lage sein, dem DNS, das Ihre Domain verwaltet, Einträge hinzuzufügen. Wenn Sie noch keine Domain haben, können Sie eine von einem Domain-Registrar erwerben und diese mit dem DNS des Registrars oder https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean- verwalten. Nameserver-von-Common-Domain-Registraren [DNS von DigitalOcean]. In diesem Tutorial verwenden wir DigitalOcean DNS, um die erforderlichen Datensätze zu erstellen.

Beginnen wir mit der Konfiguration Ihrer DNS-Einträge.

DNS-Einträge konfigurieren

Um die gewünschte Weiterleitung von "+ www.example.com " zu " example.com +" oder umgekehrt einzurichten, müssen Sie für jeden Namen einen * A-Datensatz * haben.

Öffnen Sie alles, was Sie zur Verwaltung Ihres DNS verwenden. In unserem Beispiel wird DigitalOcean DNS verwendet.

Wenn noch kein Domäneneintrag (auch als Zoneneintrag bezeichnet) vorhanden ist, erstellen Sie jetzt einen. Der * Hostname * sollte Ihre Domain sein, z. + example.com +, und die IP-Adresse sollte auf die öffentliche IP-Adresse Ihres Apache-Servers eingestellt sein. Dadurch wird automatisch ein A-Eintrag erstellt, der Ihre Domain auf die von Ihnen angegebene IP-Adresse verweist. Wenn Sie ein anderes System zum Verwalten Ihrer Domain verwenden, müssen Sie dies möglicherweise manuell hinzufügen.

Fügen Sie als Nächstes einen weiteren A-Eintrag mit "www" als Hostnamen hinzu (oder "http://www.example.com [www.example.com]", wenn die partielle Unterdomäne nicht funktioniert), und geben Sie dieselbe IP-Adresse an.

Wenn Sie beide Datensätze erstellt haben, sollte dies ungefähr so ​​aussehen:

Jetzt sollte Ihr Server über die Domain www und non-www erreichbar sein, aber die Umleitung muss noch eingerichtet werden. Das machen wir jetzt.

Aktivieren Sie das Apache Rewrite-Modul

Um die 301-Umleitung durchzuführen, verwenden wir das Apache * mod_rewrite * - oder Rewrite-Modul. Auf diese Weise wird sichergestellt, dass Ihre Benutzer mit oder ohne das Präfix * www. * Auf Ihre Website zugreifen und zu der von Ihnen bevorzugten Domain umgeleitet werden.

Das Rewrite-Modul ist unter CentOS 7 standardmäßig aktiviert. Wenn es aus irgendeinem Grund nicht aktiviert ist, stellen Sie sicher, dass Sie diese Zeile zum Modulabschnitt Ihrer Apache-Konfiguration hinzufügen (der sich standardmäßig in + / etc / httpd / conf.modules.d / 00-base.conf + befindet ):

LoadModule rewrite_module modules/mod_rewrite.so

Aktivieren Sie .htaccess-Dateien

Wir werden Apache mit Umleitungsregeln konfigurieren, die "+ .htaccess +" - Dateien verwenden. Dies ist eine Funktion, die aktiviert werden muss, indem die DocumentRoot-Verzeichnisberechtigungen gelockert werden.

Öffnen Sie Ihre Apache-Konfigurationsdatei zum Bearbeiten. Unter CentOS befindet sich die Standardkonfigurationsdatei unter "+ / etc / httpd / conf / httpd.conf +". Daher verwenden wir diese in unserem Beispiel:

sudo vi /etc/httpd/conf/httpd.conf

Angenommen, Sie verwenden den Standard-DocumentRoot "+ / var / www / html ", suchen Sie den entsprechenden Konfigurationsblock " <Verzeichnis" / var / www / html> + ". Ändern Sie innerhalb des Blocks "+ AllowOverride None " in " AllowOverride +":

Zur Apache-Konfiguration hinzufügen

<Directory >
...
   AllowOverride
...
</Directory>

Speichern und schließen.

Starten Sie jetzt Apache neu, damit die Änderung wirksam wird:

sudo systemctl restart httpd

Apache ist jetzt so konfiguriert, dass es die Datei "+ .htaccess" liest, die sich an einer beliebigen Stelle im Verzeichnis "+ / var / www / html" befindet. Fügen wir jetzt unsere Rewrite-Regeln hinzu.

Rewrite-Modul konfigurieren

Wie bereits erwähnt, konfigurieren wir das Rewrite-Modul mit einer + .htaccess + -Datei.

Wechseln Sie in Ihr Document Root-Verzeichnis, in unserem Fall "+ / var / www / html":

cd /var/www/html

Öffnen Sie nun + .htaccess + zum Bearbeiten:

sudo vi .htaccess

Wenn Sie die Datei zuvor noch nicht erstellt haben, ist sie natürlich leer. Verwenden Sie je nach Richtung, in die Sie umleiten möchten, eine der folgenden Optionen.

Option 1: Leiten Sie www zu Nicht-www um

Wenn Sie Benutzer von www zu einer normalen, nicht www-fähigen Domain umleiten möchten, fügen Sie diese Konfiguration ein:

htaccess - www to non-www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Speichern und schließen. Die Änderungen sollten sofort wirksam werden. Beachten Sie, dass Sie bei Verwendung von HTTPS "http" in der Zeile "+ RewriteRule +" auf "https" aktualisieren sollten.

Verwenden Sie diesen Befehl, um sicherzustellen, dass die Nicht-WWW-Domäne zur WWW-Domäne umleitet (ersetzen Sie den hervorgehobenen Teil durch Ihre tatsächliche Domäne):

curl -I http://www.

Sie sollten eine "+301 dauerhaft verschoben +" - Antwort erhalten, die den Nicht-WWW-Umleitungsort wie folgt anzeigt:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:04:56 GMT
Server: Apache/2.4.6 (CentOS)
Location: http:///
Content-Type: text/html; charset=iso-8859-1

Natürlich sollten Sie auf Ihre Domain in einem Webbrowser (www und nicht www) zugreifen, um sicherzugehen.

Option 2: Leiten Sie Nicht-WWW zu WWW um

Wenn Sie Benutzer von einer normalen Domain, die kein WWW-Domain ist, zu einer WWW-Domain umleiten möchten, fügen Sie diese Konfiguration ein:

htaccess - non-www to www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Speichern und schließen. Die Änderungen sollten sofort wirksam werden. Beachten Sie, dass Sie bei Verwendung von HTTPS "http" in der Zeile "+ RewriteRule +" auf "https" aktualisieren sollten.

Verwenden Sie diesen Befehl, um sicherzustellen, dass die Nicht-WWW-Domäne zur WWW-Domäne umleitet (ersetzen Sie den hervorgehobenen Teil durch Ihre tatsächliche Domäne):

curl -I http://

Sie sollten eine "+301 dauerhaft verschoben +" - Antwort erhalten, die den WWW-Umleitungsort wie folgt anzeigt:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:05:26 GMT
Server: Apache/2.4.6 (CentOS)
Location: http://www./
Content-Type: text/html; charset=iso-8859-1

Natürlich sollten Sie auf Ihre Domain in einem Webbrowser (www und nicht www) zugreifen, um sicherzugehen.

Fazit

Das ist es! Ihre Apache-Umleitung ist jetzt ordnungsgemäß konfiguriert und Ihre Benutzer können über Ihre Nicht-WWW- und WWW-Domain auf Ihren Webserver zugreifen.

Wenn Sie mehr über * mod_rewrite *, die Apache-Funktion, mit der wir die Umleitung implementiert haben, erfahren möchten, lesen Sie dieses Tutorial: https://www.digitalocean.com/community/tutorials/how-to-set- up-mod_rewrite [So richten Sie Mod_Rewrite ein].

Related