Seite 1 von 1

?GoogleBot folgt Redirect via PHP nicht?

Verfasst: 07.12.2006, 17:40
von chris21
So langsam verstehe ich gar nichts mehr:

also,

hab eine Unterseite soundso.php?irgendwas=das&etc=blubb

PHP-Code in der Seite:

Code: Alles auswählen

<?php
if&#40;empty&#40;$_SERVER&#91;"QUERY_STRING"&#93;&#41;&#41;
&#123;
&#125;
elseif&#40;isset&#40;$_SERVER&#91;"QUERY_STRING"&#93;&#41;&#41;
&#123;
unset&#40;$_SERVER&#91;"QUERY_STRING"&#93;&#41;;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58;http&#58;//seite.tld/Unterverzeichnis/soundso.php"&#41;;
&#125;
?>
Bei normalen Aufruf der Seite:

soundso.php?irgendwas=das&etc=blubb

werde ich auf soundso.php geleitet, web-sniffer behauptet das auch.

Nun zeigt mir aber CrawlTrack an, dass der GoogleBot die Seiten

soundso.php?irgendwas=das&etc=blubb

einliest, obwohl der Server über PHP Redirect diese Seiten doch gar nicht ausliefern dürfte. Und mit PHP als Serverskriptsprache sollte dies doch geschehen, bevor auf die Inhalte der Seiten (in der sich dann auch der Code des Crawltrack befindet) aufruft.

Verstehe es echt gerade nicht.

Weiß da jemand Rat?

PS: die URLs mit Querystring sind bei Google draußen. Wenigstens etwas.

Verfasst:
von

Verfasst: 08.12.2006, 09:57
von Monk
Guck mal nach, ob da nicht doch ein Code 301 bei den Aufrufen im Log erscheint - und gleich nachher einer der Zielseite mit Code 200.

Sicherheitshalber würde ich auch ein Leerzeichen hinter "Location: " setzen und UNBEDINGT ein exit() hinter den letzten header().

Kannst übrigens das unset() getrost sparen und das ganze etwas einfacher in "if(!empty...)" ausführen.

Verfasst: 08.12.2006, 11:15
von chris21
Monk hat geschrieben: und UNBEDINGT ein exit() hinter den letzten header()
Upps, das könnte es gewesen sein, würde zumindest mein logisches Problem klären, warum der GoogleBot überhaupt noch an Infos rankommt, die nach der Anweisung stehen.

Vielen Dank, Monk. Werde berichten, ob das weiterhilft.

So, seit Einbau von exit(); werden die URLs mit Querystring nicht mehr aufgerufen.

Fazit: manchmal sollte man auch bei https://de.php.net/header vorbeischauen:
de.php.net/header hat geschrieben: /* Stellen Sie sicher, dass der nachfolgende Code nicht ausgefuehrt wird, wenn
eine Umleitung stattfindet. */
exit;
Besten Dank, Monk, hast mich auf die richtige Fährte geführt.

Verfasst: 11.12.2006, 09:42
von SloMo
Ich bevorzuge die(), das ist irgendwie kewler... hey Skript, stirb! :)