<a href="-michel"></a> <a href="-pharmacy-online-2"></a> <a href="-michel"></a> <a…
von:
<a href="-online-0"></a> <a href=""></a> <a href="-anthony-gmbh/pharmacy-online-3"></a> <a…
von:
Matthes schrieb:
Nimm hansens letzten Code und mache aus index\\.html einmal index\\.php
Da hätte er als "Webdesigner" eigentlich selber drauf kommen müssen.
Gruß
hansen
Hi Matthes, Hansen, Ultima
Danke für all Eure Hilfe. Ich hab nun, der Logik folgend, geschrieben (die index.html-Zeilen habe ich behalten, falls ich mal zu Wartungszwecken eine index.html brauche):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\\.eyelikeit\\.com$ [NC]
RewriteRule ^(.*) eyelikeit.com [L,R=301]
RewriteRule ^index\\.html eyelikeit.com [R=301,L]
RewriteRule ^index\\.php eyelikeit.com [R=301,L]
Es gibt ein hervorragendes Tool, um diese Umleitungen zu testen, es nennt sich schlicht "Browser". Dort gibt man die umzuleitende Adresse ein und wenn die Umleitung funktioniert, wird man umgeleitet.
Bei Deiner Seite wird man nicht umgeleitet, die index.php bleibt stehen. Woran das liegt, vermag ich gerade aber nicht zu sagen. Die RewriteRules sind jedenfalls korrekt, genau so klappt es bei mir hervorragend.
PS: Übrigens würde ich die erste Regel etwas umschreiben, damit Leute, die eventuell über Deep Links kommen, nicht auf die Startseite umgeleitet werden.
RewriteCond %{HTTP_HOST} ^www\\.eyelikeit\\.com$ [NC]
RewriteRule (.*) eyelikeit.com/$1 [L,R=301]
Wenn es mal mit dem .htaccess Eintrag nicht so wirklich funktionieren will und man PHP verwendet, so lässt sich die Umleitung von der index.php auch wie folgt bewerkstelligen:
$a = \'http://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
$b = $config[\'www_root\'];
if ($b!=$a) {
$dest = $config[\'www_root\'];
header("HTTP/1.1 301 Moved Permanently");
header("Location: $dest");
exit;
}
www_root steht dabei für seine eigene Domain. Ggf. muss $a aus anderen Werten zusammengesetzt werden. Dies gilt vorab zu prüfen.
Generell arbeite ich immer mit dem .htaccess Eintrag, da dieser schneller ist und ganz am Anfang des Webaufrufs ausgeführt wird. Nur in Ausnahmefällen oder bei dynamischen Seiten greife ich zu dieser Methode.
der_booker schrieb:
$a = \'http://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
$b = $config[\'www_root\'];
if ($b!=$a) {
$dest = $config[\'www_root\'];
header("HTTP/1.1 301 Moved Permanently");
header("Location: $dest");
exit;
}
Hi Heiko,
in $a würde zB sowas stehen.
example.com/index.html
www.example.com/index.html
Solange $a nicht gleich $config[\'www_root\'] ist würde immer darauf umgeleitet werden. Das hätte zur Folge das man nicht auf die Unterseiten zugreifen kann. Die Request URI sollte auch bei $dest mit an gehangen werden sonst kommt man immer bei der Startseite raus obwohl eine Unterseite verlinkt wurde.
Und deine header() Angabe geht so wahrscheinlich auch nicht, da die zweite Zeile die erst Überschreibt mit 302. (Hab das aber jetzt nicht ausprobiert.) So geht es auch und man spart sich eine Zeile. header(\'Location: \'.$dest, true, 301);
Schöne Grüße
Thomas
@Thomas: kleiner Denkfehler.
Mit $a = \'http://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\']; frage ich die angefragte Webseite ab und vergleiche sie nun mit $b. Sind beide ungleich, so wird auf die Hauptdomain umgeleitet (301).
Das ganze muss nun erweitert werden mit dem URL, der aufgerufenen Seite, sprich mit $dest = $config[\'www_root\'].$url[\'site_url\'] wobei, ich gebe Dir recht, dass dies keine allgemeine Lösung ist, sondern ein Code-Sample, welches jeder individuell anpassen muss.
Ich nutze diese Zeilen für meine einzelnen Artikel, um beispielsweise Schreibfehler in den Backlinks auszumerzen. Dies hat natürlich auch einen seologischen Vorteil, da so nur eine Seite aufgerufen wird und damit kein DC entstehen kann.
Beispiel:
$a = \'http://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
$b = $config[\'www_root\']."news/show.php?id=".base64_encode($id)."&_".$entry[\'link_name\'];
if ($b!=$a) {
$dest = $config[\'www_root\']."news/show.php?id=".base64_encode($id)."&_".$entry[\'link_name\'];
header("HTTP/1.1 301 Moved Permanently");
header("Location: $dest");
exit;
}
Damit sind mir die Schreibweisen im Linknamen relativ egal. Hauptsache der Pfad stimmt und die id. Alles was dann kommt, wird direkt aus der Datenbank geholt und korrekt dargestellt.
Was meinst du dazu?
if ($_SERVER[\'HTTP_HOST\']!=\'www.example.com\')
header(\'Location: www.example.com\'.$_SERVER[\'REQUEST_URI\'], true, 301);
Ultima schrieb:
Was meinst du dazu?
if ($_SERVER[\'HTTP_HOST\']!=\'www.example.com\')
header(\'Location: www.example.com\'.$_SERVER[\'REQUEST_URI\'], true, 301);
Hast Du es bereits selber ausprobiert, sprich funktioniert es? Augenscheinlich würde den Request nach oben nehmen, für die Prüfung. Ein Vergleich findet nicht statt.
Ultima schrieb:
Und deine header() Angabe geht so wahrscheinlich auch nicht, da die zweite Zeile die erst Überschreibt mit 302. (Hab das aber jetzt nicht ausprobiert.)
Durch die erste Zeile header("HTTP/1.1 301 Moved Permanently"); wird der Status für den Header gesetzt. Dieser ist 301 und nicht 302. Die folgende Zeile ergänzt und überschreibt NICHT! header("Location: $dest");
Wer den Status seiner Seite abfragen möchte, der findet hier eine sehr gute Möglichkeit:
www.seoconsultants.com/tools/headers
der_booker schrieb:
Hast Du es bereits selber ausprobiert, sprich funktioniert es? Augenscheinlich würde den Request nach oben nehmen, für die Prüfung. Ein Vergleich findet nicht statt.
Ja und Nein ich hatte http:// vergessen aber so geht es, ich hab es gerade getestet. if ($_SERVER[\'HTTP_HOST\']!=\'www.example.com\')
header(\'Location: www.example.com\'.$_SERVER[\'REQUEST_URI\'], true, 301);
Ultima schrieb:
if ($_SERVER[\'HTTP_HOST\']!=\'www.example.com\')header(\'Location: www.example.com\'.$_SERVER[\'REQUEST_URI\'], true, 301);
Okay ist noch für dynamische Seiten ausbaufähig, aber funktioniert.
Beitrag erstellen
EinloggenKostenlos registrieren