macangelo
Avatar macangelo
Themenersteller
Architekt, Webdesigner
Neuling (6 Beiträge)

Doppelter Content - .htaccess Eintrag (Seite 2)


hansen
Foren Moderator
Content Gott (1886 Beiträge)
am 26.04.2011, 15:05 Uhr schrieb hansen

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


Nepal Rundreisen

macangelo
Avatar macangelo
Architekt, Webdesigner
Neuling (6 Beiträge)
am 27.04.2011, 05:24 Uhr schrieb macangelo

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]


RewriteCond %{THE_REQUEST} /index\\.html

RewriteRule ^index\\.html eyelikeit.com [R=301,L]


RewriteCond %{THE_REQUEST} /index\\.php

RewriteRule ^index\\.php eyelikeit.com [R=301,L]



Das Ergebnis ist das gleiche: der alte Seitenreport ist happy (kein Duplicate Content), der neue Seitenreport ist es nicht.

Gibt es ein anderes Tool, um auszulesen, ob die obigen Befehle nun greifen? Wisst Ihr, wie der Seitenreport das abfragt?

Besten Dank!
macangelo


matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 27.04.2011, 10:33 Uhr schrieb matthes

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]


Make Seitenreport great again!

der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 27.04.2011, 20:47 Uhr schrieb der_booker

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.


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com


gelöschter Benutzer
am 27.04.2011, 21:19 Uhr schrieb

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


der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 27.04.2011, 21:59 Uhr schrieb der_booker

@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.


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com


gelöschter Benutzer
am 27.04.2011, 22:23 Uhr schrieb

Was meinst du dazu?


if ($_SERVER[\'HTTP_HOST\']!=\'www.example.com\')
header(\'Location: www.example.com\'.$_SERVER[\'REQUEST_URI\'], true, 301);


der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 29.04.2011, 16:09 Uhr schrieb der_booker

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



Bietet jemand aus unserer Seo-Gemeinde einen ähnlichen Dienst an?


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com


gelöschter Benutzer
am 29.04.2011, 16:31 Uhr schrieb

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);




Der Firebug zeigt die Header auch, unter Netzwerk oder wenn man PageSpeed installiert hat.


Schöne Grüße
Thomas


der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 29.04.2011, 16:43 Uhr schrieb der_booker

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.


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com



« zurück zu: OffPage Optimierung

Das Seitenreport Forum hat aktuell 5276 Themen und 36111 Beiträge.
Insgesamt sind 48364 Mitglieder registriert.