Mit mod_rewrite das www löschen oder hinzufügen

Um doppelten Inhalt zu vermeiden ist es ratsam, sich auf eine Domain zu beschränken. Gleichzeitig sollte man dafür sorgen, daß die hinterlegten Inhalte weder über andere Domains noch über Subdomains erreichbar sind.

Die URL „www.beispiel.de“ ist dabei etwas anderes als nur „beispiel.de“. Das „www“ am Anfang ist eine Subdomain, die in früheren Zeiten des Internets anzeigen sollte, daß der WorldWideWeb Teil der Domain aufgerufen werden soll, im Gegensatz zu z.B. ftp / gopher / irc usw. In der heutigen Zeit ist dies hinfällig, aber viele Websurfer sind es immer noch gewohnt, stur das „www“ vor die Domain zu tippen.

Um den Besucher nun auf eine der beiden Möglichkeiten zu beschränken, kann man sich des mod_rewrite Moduls vom Apache bedienen. Einfach eine Datei .htaccess im Hauptordner der Webpräsenz anlegen und einen der folgenden Codeschnippsel einfügen.

Für die Weiterleitung aller www-Domains auf ihr Nicht-www Pendant:


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

Für die Weiterleitung aller Nicht-www Domains auf ihr www-Pendant:


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

Für die Weiterleitung aller ankommenden Anfragen auf eine www-Domain:


RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.meine-domain\.de$
RewriteRule ^(.*)$ http://www.meine-domain.de/$1 [L,R=301]

Gerade die ersten beiden Fälle sind knifflig, ich hoffe die Codeschnippsel helfen!

Ein Kommentar

  1. Ich bekomme bei der 1. Variante dieses Double Slash Problem … Gelöst hab ich es nun mit

    RewriteCond %{REQUEST_URI} ^(.)//(.)$
    RewriteRule . %1/%2 [R=301,L]

    aber hätte es natürlich lieber gleich richtig hmhm …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert