Mit mod_rewrite das www hinzufügen oder löschen

14. Oktober 2009 at 13:11

Um doppelten Inhalt auf verschiedenen Domains zu vermeiden ist es ratsam, sich auf eine Domain zu beschränken.
Dabei ist zu beachten dass die Domain „www.fly2mars-media.de“ nicht gleich „fly2mars-media.de“ ist.

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.

Auch eine Subdomain gilt für Suchmaschinen als eigenständige Domain und wird ggf. negativ in Bezug auf Doppelten Inhalt (Duplicate Content) gewertet.

Um die Domain auf eine der beiden Möglichkeiten zu beschränken und die Besucher auf diese weiter zu leiten, kann man sich des mod_rewrite Moduls vom Apache bedienen. Dazu wird einfach eine Datei .htaccess im Hauptordner der Webpräsenz (Document Root) anlegen und einen der folgenden Code-Zeilen  einfügen.

per .htaccess-file:

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

Weiterleitung aller ankommenden Anfragen auf eine www-Domain:

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

Weiterleitung aller www-Domains auf ihr Nicht-www Pendant:

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

Weiterleitung aller Nicht-www Domains auf ihr www-Pendant:

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

Eine Weiterleitung ist auch über PHP möglich, sollte aus irgend welch Gründen eine Weiterleitung über mod_rewrite nicht möglich sein, so realisiert ihr das über PHP wie folgt (mod_rewrite Variante ist klar vorzuziehen!!!):

if ( $_SERVER['HTTP_HOST'] == 'projekt.de' ) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.projekt.de");
exit;
 }