Apache - Anfragen ohne www. umleiten

Suchmaschinen bewerten eine Seite und deren Inhalt anhand vieler, teilweise dem normalen User garnicht bewusste, Kriterien um den PageRank einer Seite zu bestimmen, bzw. deren Relevanz zu einem Suchbegriff.
So wird es z.B. von Suchmaschinen inzwischen geahndet, wenn ein und derselbe Inhalt über zwei verschiedene Adressen erreichbar ist.
Es ist für eine Suchmaschine bereits ein Unterschied, ob eine Seite ohne www. Subdomain-Präfix (z.B. http://webseite.de ) oder mit www. Subdomain-Präfix (z.B. http://www.webseite.de ) aufgerufen werden kann. Das ist auch soweit korrekt, da in verschiedenen Subdomains ja vollkommen andere Inhalte bereitgestellt werden können. Im weitesten Sinne können sich ja gar vollkommen andere Server hinter jeder Subdomain verbergen. Und www ist letzten endes auch nur eine Subdomain. Aus Sicht der Bewertungslogik einer Suchmaschine, handelt es sich bei einer Domain http://webseite.de und http://www.webseite.de um völlig verschiedene Webseiten.

Man nehme nur mal an das wäre nicht so. Dann könnte sich ja jeder Kinz und Kunz, der nur ein einziges Mal eine HTML Seite mit allen möglichen Suchbegriffen von Abakus bis Zypern hochgeladen hat, beliebig viele (Sub-/)Domains auf diese HTML Seite zeigen lassen, und somit quasi alleine in den Suchergebnissen auftauchen. Somit verdrängen Website-Spammer ja fast alle anderen relevanten Seiten, die ordnungsgemäß nur eine Domain auf ihre Webpräsenz zeigen lassen, völlig aus den Suchergebnissen.

Man kann dieser Herabstufung der eigenen Präsenz jedoch ganz einfach entgegenwirken: Indem man einfach alle Anfragen an http://webseite.de nach http://www.webseite.de umleitet.
Hierzu bietet sich das Apache Modul mod_rewrite an. Es handelt sich hierbei um ein sehr mächtiges Modul, welches bestimmte Adressen zu beliebigen anderen Adressen umformen kann. Es hat dabei seine ganz eigene Syntax um hierfür Regeln zu definieren. Diese ist viel zu mächtig um sie hier auch nur annähernd zu erklären; wen es interessiert, der kann die Anleitung zu diesem Modul hier finden.
An dieser Stelle sei nur erklärt, wie man seinen Apache Webserver dazu bringen kann, die URL ohne www. zu einer Adresse mit www. umzuformen:

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

Dieser Absatz kann per .htaccess Datei, per vHost oder global in der Apache Konfiguration eingefügt werden. Nicht vergessen den Webserver neu zu starten und ausprobieren!
Ich erkläre die drei Zeilen wie gesagt nur ganz grob, da ich keine Lust habe der 1.000. Wiederkäuer der Moduldokumentation zu werden:

Zeile 1:
Hier wird die Rewrite Engine eigentlich nur aktiviert, damit das Modul überhaupt angesteuert werden kann.

Zeile 2:
Mit "RewriteCond" wird das Muster definiert, welches, sofern es in der eingegebenen Adresse vorkommt, nach den Bedingungen der Direktive "RewriteRule" schliesslich umgeformt werden soll. %{HTTP_HOST} ist eine Variable, die vom Modul mod_rewrite zur Laufzeit der Rewrite Engine automatisch erzeugt wird. Sie beinhaltet die in der HTTP-Protokollanfrage angegebenen Hostnamen.
Dadurch das diese Variable an der 1. Position nach "RewriteCond" steht, wird dieses bei der Anfrage nach dem an der 2. Position stehendem Muster durchsucht.
Das Muster an der 2. Position nach "RewriteCond" ist ein regulärer Ausdruck; eine weitere Technik, die zu erklären hier den Rahmen sprengen würde. Er besagt, das die Zeichenkette in der Variable %{HTTP_HOST} genau "webseite.de" sein muss; ohne ein Zeichen davor und ohne ein Zeichen dahinter. ("/unterseite.html" zum Beispiel ist nicht Teil dieser Veriablen, da es hinter dem "/" steht). Die Zusatzoption [NC] an der 3. Position nach "RewriteCond" bedeutet, das Groß- und Kleinschreibung in der URL egal ist. (NC = Non Casesensitive).

Zeile 3:
Diese Zeile definiert letzten Endes die Regel, nach der die Anfrage modifiziert werden soll. Es handelt sich zunächst wieder um einen regulären Ausdruck, der besagt, das die gesamte Zeichenkette, welche durch "RewriteCond" analysiert wurde, durch "http://www.webseite.de/urspruengliche/anfrage.html" ersetzt werden soll ("/ursprüngliche/anfrage.html" ist selbstverständlich nur ein Beispiel. Hier wird immer eingefügt, was nach der TLD angegeben worden ist). Dabei soll der HTTP Statuscode 301 (Permanent Redirect) in der Antwort versendet werden und dieses ist die letzte Regel ([L]). Danach sollen keine mehr folgen. So werden Endlosschleifen vermieden und der Arbeitsbereich der RewriteEngine klar abgegrenzt.

Teilen per: TwitterEmail