Seite 1 von 1

_escaped_fragment_ --> Googlebot gibt 301 zurück

Verfasst: 12.09.2012, 08:41
von Allertaler
Hallo Gemeinde,

ich habe ein Problem mit meinen HTML-Snapshot-Dateien. Für den Googlebot habe ich jene extra erstellt und in der .htaccess ausgewiesen:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=\/([^&]*)
RewriteRule .* http://www.domain.de/index.php?cont=%1 [R=301,L,NE]
Die Original-URL lautet bspw.: https://www.domain.de/#!/inhalt. Wenn ich zum Testen https://www.domain.de/?_escaped_fragment_=/inhalt aufrufe, wird diese auch korrekt zu https://www.domain.de/index.php?cont=inhalt umgeleitet. Jetzt sind im Google-Index allerdings auch diese Version gelistet (https://www.domain.de/index.php?cont=inhalt), obwohl ich ausschließlich die URL's mit #! in der XML-Sitemap gelistet habe. Wenn ich in den Webmastertools unter "Abruf wie durch Google" --> https://www.domain.de/#!/inhalt eingebe, gibt er mir aus:

Code: Alles auswählen

HTTP/1.1 301 Moved Permanently
(...)
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http&#58;//www.domain.de/index.php?cont=inhalt">here</a>.</p>
<hr>
<address>Apache/2.2.22 Server at www.domain.de Port 80</address>
</body></html>
Kennt jemand das Problem bzw. könnte mir evt. helfen? Wie erreiche ich zudem, dass in der Google-Suche auch die "Pretty URL" (wie die Google-Hilfe sie nennt) und nicht die "Ugly URL" angezeigt werden?

Vielen Dank & Grüße
Sven

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 12.09.2012, 09:56
von Synonym
Nun, dann darfst Du keine Weiterleitung setzen. Du sagst Google ja explizit: "Nimm nicht die _escaped_fragment_ (gibt es nicht mehr) sondern die index.php?cont".

https://support.google.com/webmasters/b ... wer=174993

Verfasst: 12.09.2012, 10:11
von Allertaler
Aber ich dachte, diese Anweisung in der .htaccess bewirkt, wenn der Googlebot ja die Anfrage mit ?_escaped_fragment_= stellt, dass dann die index.php?cont= geladen wird (in dem ja der lesbare Inhalt steckt). Oder habe ich da einen gehörigen Denkfehler?

Danke & Grüße

Verfasst: 12.09.2012, 13:31
von Synonym
Ja, das hast Du einen Denkfehler. Wenn Du nur willst, dass das File geladen wird, dann setze als Flag einfach ein [L]. Dann wird das hinten angegebene File geladen, die URL bleibt aber wie vorne angegeben.

Du setzte aber ein [R=301,L] und lädst das File also nicht einfach, sondern leitest die Anfrage an eine andere, neue URL weiter. Nach der Weiterleitung hast Du also eine neue URL und dann wird das File aufgerufen.

Das eine heißt also, dass der Inhalt des Files geladen wird. Das andere, dass an die neue URL eine Weiterleitung erfolgt. Das sind zwei gänzlich unterschiedliche Dinge.

Verfasst: 17.09.2012, 10:04
von 0101
Muss mich hier mal einklinken weil ich eine ähnliche Frage habe:

Google wandelt ja den Hashbang #! in ?_escaped_fragment_ um. Nun zu meinem Problem:
Ich übergebe bereits eine Variable sodass zwei ? in der Url stehen würden. Also dachte ich mir schreibe ich das 2te ? mit nem mod_rewrite in ein & um und lasse es verarbeiten. Leider kriege ich letzteres nicht hin. Mein Verusch: index.php?url=test.php?_escaped_fragment_= zu index.php?url=test.php&_escaped_fragment_= umzuschrieben

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)
RewriteRule ^(.*)$ ^index.php?url=test.php&_escaped_fragment_=$1 [L]

klappt leider nicht.
Wäre schön wenn sich jemand der Sache mal annehmen könnte.

Danke

Gruß

Verfasst: 17.09.2012, 10:28
von Allertaler
Dank Synonym, für den Hinweis. Ich habe die .htaccess jetzt so abgeändert (vielleicht hilft es anderen auch), so dass es nun funktioniert:

Code: Alles auswählen

RewriteCond %&#123;QUERY_STRING&#125; ^_escaped_fragment_=\/&#40;&#91;^&&#93;*&#41;
RewriteRule .* /index.php?cont=%1 &#91;L&#93;
Gruß Sven

Verfasst: 17.09.2012, 10:33
von 0101
Hab das ganze jetzt wie folgt geändert:


RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=\/([^&]*)
RewriteRule ^(.*)? index.php?url=test.php&_escaped_fragment=$1 [QSA,L]


Klappt aber leider immer noch nicht, der include der index.php meldet nen fehler das er index.php?url=test.php?_escaped_fragment_= nicht finden kann --> immer noch das ? in der Url