Apr 15, 2008

Standard-Domain mit htaccess definieren

Hinsichtlich der Suchmaschinenfreundlichkeit einer Webseite (insbesondere der Vermeidung von Dublicate Content) sollte man als Webmaster darauf achten, dass die eigene Webseite nicht unter mehreren Adressen zu erreichen ist. Besonders im Index der Suchmaschinen sollte eine Domain nicht gleichzeitig als www.meinedomain.tld und meinedomain.tld auftauchen. Mittlerweile gibt es in den Google Webmaster Tools die Möglichkeit die bevorzugte Domain vorzuschlagen, die in den Suchergebnissen verwendet werden soll. Ich würde das als zusätzliche Maßnahme betrachten. Keinesfalls ersetzt es die Festlegung einer Standartdomain.

Es geht also darum sich auf eine Hauptdomain festzulegen und alle anderen Variationen der Webadresse auf die festgelegte Hauptdomain mit der suchmaschinenfreundlichen Weiterleitung 301 (Moved Permanently) umzuleiten. Kurz: Eine Standarddomain muss definiert werden.

Hierfür gibt es mehrere Möglichkeiten:

– per .htaccess (mit Mod Rewrite)

– mit PHP (ohne Mod Rewrite)

Für die htaccess Variante werden häufig folgende 2 Zeilen verwenden, um eine Standartdomain zu definieren:

RewriteEngine on

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

Diese Variante funktioniert soweit ganz gut, da Aufrufe einer Domain ohne www (z.B. http://meinedomain.tld) jetzt per 301 nach http://www.meinedomain.tld weitergeleitet werden.

Was mir bisher nicht so gut daran gefallen hat ist die Tatsache, dass der Aufruf von z.B. http://www.meinedomain.tld/index.htm im HTTP-Header den Status Code 200 erzeugt. Dieser Fall wird also in der oben genannten htaccess Lösung nicht berücksichtigt.

Alternativ bietet sich die Folgende Variante an, da diese alle Variationen der Domain ohne www als auch die Aufrufe wie http://www.meinedomain.tld/index.htm und http://meinedomain.tld/index.htm korrekt per 301 nach http://www.meinedomain.tld/ weiterleitet:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/index.htm$
RewriteRule ^(.*)$ http://www.meinedomain.tld/ [L,R=301]

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

Edit: Auf diesem Blog habe ich die Variante noch nicht zum Laufen bekommen, da es sich irgendwie mit anderen Anweisungen in der .htaccess zu beißen scheint. Wen mir damit jemand weiterhelfen könnte würde ich mich sehr freuen. Auf anderen Domains läuft es jedenfalls einwandfrei 😉

1 Comment

  • in meinem testplog habe ich folgende einstellung:

    Permalink-Struktur anpassen-
    Optional-
    Kategorie-Basis-

    „/.“

    eingetragen.

    unter:Benutzerdefinierte Struktur

    „/%postname%.html“

Leave a comment

You must be logged in to post a comment.