tkar.de Logo Weblog von Thomas Kleinhenz

Mit oder ohne www

Zur Suchmaschinenoptimierung macht es Sinn, dass eine Website nur entweder mit oder ohne www vor dem URL zu erreichen ist. Man vermeidet die Duplizierung einer Seite durch serverseitige Umleitung.

www-Grafik Schon seit etlichen Jahren gibt es eine Initiative, die für die Abschaffung der drei w zur Kennzeichnung von Website-Adressen plädiert (no-www.org/). Die Benutzung der Subdomain www sei redundant, da der Browser durch Verwendung des Protokolls HTTP dem Server eindeutig mitteilt, welcher Content angefordert wird. Man kann zu diesem Vorschlag stehen, wie man will - im Hinblick auf die englische Sprache gäbe es noch ein anderes Argument -, aber Suchmaschinen zählen zwei Seiten, wenn der Webserver sowohl auf www.example.com als auch auf example.com antwortet. Und sie sehen duplizierte Inhalte!

Um das zu verhindern macht es Sinn, sich für eine Variante, gleich ob mit oder ohne www zu entscheiden, und Requests auf die jeweils andere mit einem Redirect des Servers zu beantworten: die Suchmaschine erkennt die Umleitung, duplicate content wird vermieden.

Beim Apache-Webserver bedient man sich des Rewrite-Moduls, um den Redirect zu definieren. Auf der Seite der www-Gegner findet man auch gleich den benötigten Code, um die Umleitung vorzunehmen. Der funktioniert Dank einer regular expression auch für den Fall, das mehrere Domainnamen umgeleitet werden sollen.

Nun hat man sich aber womöglich für die Variante mit www entschieden, und sucht nach einem passenden Code-Schnipsel. Der erfahrenen Programmierer mag entweder als faul oder als effizient gelten, aber zunächst googelt er, ob vielleicht ein Kollege das zu lösende Problem schon bearbeitet hat, bevor er das Rad neu erfindet. Und im vorliegenden Fall findet er Lösungen zum Redirect für einen Domainnamen, nicht aber die Umleitung per regular expression für beliebig viele Namen. Selbst die Gegeninitiative www. is not deprecated (www.yes-www.org/) stellt nur Code für eine Domain zur Verfügung. Solchermaßen versichert, dass die Neuentwicklung sinnvoll ist, musste ich den Code eben selbst schreiben und stelle ihn der interessierten Öffentlichkeit zur Verfügung.

In den folgenden Code-Ausschnitten werden die Rewrite-Anweisungen für Apache-Webserver in allen Varianten zusammengestellt. Obwohl durch die beiden Versionen mit regular expressions eigentlich alle Fälle abgedeckt werden, mag man sich bei Umleitung eines einzelnen Domainnamens womöglich für eine der beiden einfacheren Varianten entscheiden. Die Anweisungen sind zur Verwendung in einer .htaccess-Datei im Server-Root gedacht. Zum Einfügen in die Konfigurationsdateien des Webservers müssen sie u.U. geringfügig angepasst werden.

Umleitung zu ohne www

Für einen Domainnamen

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

Für beliebig viele Domainnamen

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

Umleitung zu mit www

Für einen Domainnamen

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

Quelle: http://www.yes-www.org/redirection/

Für beliebig viele Domainnamen

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

Der Knackpunkt im letzten Code-Schnipsel, um das es mir hier eigentlich geht, ist der Ausdruck für fehlendes www: ^(?!www\.). Er beruht auf einer negative look-ahead assertion. Gemäß Definition prüft die Formel Ausdruck1(?!Ausdruck2), dass Ausdruck2 nicht auf Ausdruck1 folgt. Genau was gesucht wurde! Wenn www. nicht auf den Zeilenanfang (^) folgt, dann ist die Bedingung erfüllt und die RewriteRule wird ausgeführt: die Umleitung wird geschaltet.

Ein Nachteil dieser Pauschalumleitung sei nicht verschwiegen: Sie setzt www. auch gnadenlos vor jede Subdomain! Will man Subdomains verwenden, muss man also entweder dafür sorgen, dass der Server auch deren Umleitung richtig ausliefert, oder man passt die ReWrite-Bedingung an. Aber für das Problem, für das die beschriebene Lösung entwickelt wurde, hat sie sich bewährt: Eine Typo3-Site mit RealUrl-Extension und vielen Domainnamen, von denen einige noch auf Subsites innerhalb der Typo3-Installation gelenkt werden. Wer so etwas schon einmal aufgesetzt hat, weiß wovon ich rede.

25.10.2009 · Permalink

Feed abonnieren