Mit oder ohne www bei STRATO (PHP Redirect 301)

SEO, Suchmaschinenoptimierung, Google, Yahoo usw.

Mit oder ohne www bei STRATO (PHP Redirect 301)

Beitragvon ReneDD » Mi 16. Jul 2008, 18:21

Suchmaschinen reagieren allergisch auf doppelten Content (Duplicate Content). Wenn deine Website einmal mit und einmal ohne www. erreichbar ist und den selben Inhalt zeigt wird dies als doppelter Content gewertet.

Dies wollen wir natürlich vermeiden. Normal würden wir jetzt mod_rewrite einsetzen.

Nur was machen wenn unser Anbieter uns kein mod_rewrite anbietet? Was machen wenn der Provider keine Festlegung der Standarddomain anbietet?
STRATO ist zum Beispiel so ein Anbieter.

Wir müssen das ganze per PHP realisieren. Dazu gibt es bei STRATO eine Besonderheit. Die Server Variable $_SERVER['HTTP_HOST'] gibt normal die im Browser aufgerufene URL wieder. Bei STRATO allerdings wird diese immer mit www. dargestellt.

Somit funktioniert folgende Variante bei STRATO nicht. Diese funktioniert aber bei den meisten anderen Anbietern.

Code: Alles auswählen
<?php
if (strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
   header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']");
    exit();
}
else
{
   header("HTTP/1.1 200 OK");
}
?>


Bei STRATO müssen wir den Code ändern. Die Variable $_SERVER['HTTP_HOST'] nützt uns ja nichts da immer ein www vorhanden ist.
Allerdings gibt es STRATO die Variable $_SERVER['SCRIPT_URI']. Diese Variable gibt die Adresse wie im Browser aufgerufen aus.

Folgender Code funktioniert bei STRATO.

Code: Alles auswählen
<?php
if (strpos($_SERVER['SCRIPT_URI'], 'www.') === false) {
   header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']");
    exit();
}
else
{
   header("HTTP/1.1 200 OK");
}
?>


Wichtig dabei ist das bei header("Location...) das www. entfernt wird. Das übergibt STRATO ja automatisch.

Der Code muss ganz am Anfang in die erste aufgerufene Datei eingefügt werden. Meist die index.php.
Bei Joomla und WordPress funktioniert das ganze so. Bei anderen Systemen die nicht immer die index.php aufrufen müsste man den Code anpassen.

Sollte nun jemand meine Seite ohne www. aufrufen wird er automatisch auf mit www. umgeleitet.

Will man testen ob die Weiterleitung Suchmaschinenfreundlich erstellt wurde kann man einen Redirect Check machen. http://www.webconfs.com/redirect-check.php bietet und so etwas an.

Bei mir kommt z.B. folgende Meldung wenn ich service-foren.de ohne www eingebe.
Found redirect to http://www.service-foren.de/. The Redirect is Search Engine Friendly.


Erklärung zum Code:

Code: Alles auswählen
if (strpos($_SERVER['SCRIPT_URI'], 'www.') === false) {

Prüft ob ein www. in der Adresszeile angegeben wurde.

Code: Alles auswählen
   header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']");
    exit();

Falls kein www. vorhanden ist.
Die erste Zeile teilt dem Browser / Crawler mit das die Seite wo anders zu finden ist.
Die zweite Zeile führt den Redirect durch. $_SERVER['REQUEST_URI'] erlaubt das jede aufgerufene URL umgeleitet wird und man also an das richtige Ziel kommt.

Beispiel:
test123.de -> Umleitung -> http://www.test123.de
test123.de/test -> Umleitung -> http://www.test123.de/test


Die dritte Zeile beendet das PHP Skript sofort. Verhindert unnötiges parsen.

Code: Alles auswählen
else
{
   header("HTTP/1.1 200 OK");
}

Sollte die Seite mit www. aufgerufen wurden sein sagen wir dem Browser es ist alles ok.
ReneDD
Administrator
 
Beiträge: 173
Registriert: Sa 9. Feb 2008, 23:18

Mit oder ohne www bei STRATO (PHP Redirect 301)

Google

Google
 

Zurück zu Suchmaschinenoptimierung (SEO)

Wer ist online?

Mitglieder: CommonCrawl [Bot], Yandex [Bot]