jQuery / Ajax-Requext- wie vermeide ich das Laden von Metainfos?
Milena
- javascript
Hallo zusammen,
Ich lade mir via eines ajax-Requests Informationen auf eine Seite. Dabei ist mir aufgefallen- sofern man dem generierten Quelltext von Firefox Glauben schenken darf- dass die meta Informationen (in diesem Fall <meta name="robots" content="noindex, follow">) mit in die Seite geladen wird. Ich verstehe nicht warum das so ist- und finde nicht heraus wie ich das vermeiden kann.
Mein ajax-Request sieht so aus:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery.ajax({
type: "GET",
async: true,
dataType: "html",
url: "/ziel.html",
success: function(data){
jQuery('.content').html(data).find('body');
}
});
});
</script>
In der ziel.html steht dann folgendes:
<!DOCTYPE html>
<html lang="de">
<head>
<meta name="robots" content="noindex, follow">
</head>
<body>
Inhalt.. bla bla bla
</body>
</html>
Es ist so: die ziel.html soll nicht durch google indiziert werden und uns wurde von Seoexperten gesagt das ginge am einfachsten wenn wir diesen Seiten den <meta name="robots" content="noindex, follow"> mitgeben. Aber natürlich soll dieser dann nicht durch den ajax-Aufruf auf die SEite geladen werden welche dann nat. indiziert werden soll..
Vielleicht kann mir jemand auf die Sprünge helfen.. achso uns wurde auch gesagt das ein Eintrag in die robots-Datei um die Indizierung zu vermeiden nichts hilft weil sich google angeblich darüber hinwegsetzt..
Bin etwas ratlos. Vielen Dank für Eure Hilfe.
Hi,
Es ist so: die ziel.html soll nicht durch google indiziert werden und uns wurde von Seoexperten gesagt das ginge am einfachsten wenn wir diesen Seiten den <meta name="robots" content="noindex, follow"> mitgeben. Aber natürlich soll dieser dann nicht durch den ajax-Aufruf auf die SEite geladen werden welche dann nat. indiziert werden soll..
Was du per AJAX in irgendeine andere Seite hineinlädst, interessiert Googles Bot doch überhaupt nicht.
MfG ChrisB
Moin!
Hi,
Es ist so: die ziel.html soll nicht durch google indiziert werden und uns wurde von Seoexperten gesagt das ginge am einfachsten wenn wir diesen Seiten den <meta name="robots" content="noindex, follow"> mitgeben. Aber natürlich soll dieser dann nicht durch den ajax-Aufruf auf die SEite geladen werden welche dann nat. indiziert werden soll..
Was du per AJAX in irgendeine andere Seite hineinlädst, interessiert Googles Bot doch überhaupt nicht.
Doch.
- Sven Rautenberg
Hi,
Was du per AJAX in irgendeine andere Seite hineinlädst, interessiert Googles Bot doch überhaupt nicht.
Doch.
Siehe dortens, ich glaube wir missverstehen uns hier …
MfG ChrisB
Hallo
Ich lade mir via eines ajax-Requests Informationen auf eine Seite. Dabei ist mir aufgefallen- sofern man dem generierten Quelltext von Firefox Glauben schenken darf- dass die meta Informationen (in diesem Fall <meta name="robots" content="noindex, follow">) mit in die Seite geladen wird. Ich verstehe nicht warum das so ist- und finde nicht heraus wie ich das vermeiden kann.
Gehe ich recht ikn der Annahme, dass du eine bestehende Seite um weitere Daten ergänzt? Wenn ja, dann lade per Ajax nur den dafür notwendigen HTML-Quelltextschnipsel und nicht ein vollständiges Dokument.
Inhalt.. bla bla bla
Das ist, was (inklusive notwendiger HTML-Tags) zurückgeliefert werden soll.
Tschö, Auge
Hallo,
Google interessiert sich für unvollständige HTML-Dateien nicht, sofern sie nicht direkt verlinkt sind. HTML-Snippets, die nur per JavaScript geladen und ins Dokument eingefügt werden, werden von Google eher ignoriert, jedenfalls NICHT als separate Ressourcen behandelt.
Natürlich ist nicht ausgeschlossen, dass Google anderweitig an die URL des nachgeladenen HTMLs kommt. Dann würde ich dort aber kein vollständiges HTML-Gerüst mit html, head, body und meta-Element unterbringen, sondern die URL kurzerhand in die http://de.selfhtml.org/diverses/robots.htm@title=robots.txt schreiben und Google das indizieren verbieten.
uns wurde auch gesagt das ein Eintrag in die robots-Datei um die Indizierung zu vermeiden nichts hilft weil sich google angeblich darüber hinwegsetzt..
Vielleicht solltet ihr euch einen anderen SEO-Experten zulegen, das ist nämlich Quatsch. Google unterstützt beides. Selbst wenn nicht: Wenn Google sich über robots.txt hinwegsetzt, könnte sich sich genauso über das meta-Element hinwegsetzen.
Zu deinem Code:
jQuery.ajax({
type: "GET",
async: true,
dataType: "html",
url: "/ziel.html",
success: function(data){
jQuery('.content').html(data).find('body');
}
});
});
data beinhaltet hier den kompletten HTML-Code als String. Da dich nur der body interessiert, müsstest du dessen Inhalt extrahieren, bevor du .content den neuen Inhalt zuweist. Der Aufruf von find('body') erzeugt nur ein neues jQuery-Objekt, nimmt keine Filterung vor.
Das extrahieren des body-Inhalts ist allerdings gar nicht so einfach. Bei einer einfachen Zuweisung an innerHTML (das, was jQuerys .html() macht) ignoriert der Browser schon viele Elemente wie html, body und head, aber title und meta bleiben. Ein DOMParser und das anschließende Heraussuchen des body-Inhalts wären nötig.
Mathias
Erstmal: vielen Dank molily, Auge, Chris! Ihr habt mir schon viel weitergeholfen ;)
molily:
Ich habe den Beispielcode nat. etwas vereinfacht damit das hier nicht ausufert. Der ajax-Request ist nicht -wie es möglicherweise sinnvoller wäre- an ein onclick-Event gebunden sondern wird ausgeführt wenn eine bestimmte Bedingung zutrifft, diese wird aber serverseitig ausgeliefert.
Weisst Du vielleicht ob das einen Unterschied macht wenn ich das besser an das onlick-Event binde... ich verstehe ja selbst nicht warum google diesen Link folgt und sie offensichtlich indexiert.
Dazu gleich zu Problem 2: ich bin überhaupt darauf gekommen weil mir die google webmastertools in letzter Zeit verstärkt Soft Crawling Fehler auswirft. Und wir sollen das unterbinden. Unsere Seo-Agentur (es handelt sich um einen Online-Shop btw) macht uns gerade ziemlich viel Druck.
Du sagst es ist Unsinn dass google den robots-Anweisungen nicht mehr folgt- ich verstehe es auch nicht. Blackbox Google- Seo ist ein schwieriges Thema. Aber ich kann nicht einfach sagen das ist Quatsch, google beachtet das sehr wohl. Ich brauche dazu halt verlässliche Quellen. und wo gibt es die? Ich weiss es nicht.
Jetzt aber zu dem hier:
"Das extrahieren des body-Inhalts ist allerdings gar nicht so einfach. Bei einer einfachen Zuweisung an innerHTML (das, was jQuerys .html() macht) ignoriert der Browser schon viele Elemente wie html, body und head, aber title und meta bleiben. Ein DOMParser und das anschließende Heraussuchen des body-Inhalts wären nötig."
Magst Du mir vielleicht noch etwas mehr Hinweise geben. Ich will es schon selbst herausfinden ich will hier nat. keine fertigen Lösungen sondern es VERSTEHEN. Aber vielleicht magst Du mri dazu noch was schreiben?
Ich bin grundsätzlich eh nicht glücklich mit dieser Lösung. Am liebsten wäre mir ein xml-Dokument wo ich mir alle relevanten Informationen suchen kann und dann gezielt an ein html-Gerüst verteilen kann. Aber auch hier hab ich Wissenslücken: könnt ihr mir vielleicht sagen ob google xml-Dateien indiziert? Oder ob ich damit auf der sicheren Seite bin? Weil dann würde ich den Quatsch mit dem Laden von fertigem Html von dieser seite einfach lasssen und mir eine sauber strukturierte xml-Datei geben lassen von der ich mir die Daten ziehe..
Auge, nun zu Dir:
"Gehe ich recht ikn der Annahme, dass du eine bestehende Seite um weitere Daten ergänzt? Wenn ja, dann lade per Ajax nur den dafür notwendigen HTML-Quelltextschnipsel und nicht ein vollständiges Dokument.
"
Ja genau. Es ist wie ich oben schon geschrieben habe nur ein vereinfachtes Beispiel Ich brauche halt gewisse Informationen die ich über ajax in eine bestehende Datei hereinladen muss. zuvor war es einfach eine html-Seite welche nur reinen Code beinhaltet hat. Aber diese wurden lt. den webmastertools indiziert. Desahlb dieser etwas verzweifelte Versuch das mit einem sauberen Aufbau welches auch den noindes follow meta tag beinhaltet zu lösen.
Chris:
"Was du per AJAX in irgendeine andere Seite hineinlädst, interessiert Googles Bot doch überhaupt nicht."
Ist das so? Warum laden die dann im Index? Bzw. warum werden die webmastertool auf diese aufmerksam und meckern rum dass das fehlerhafte Links sind? ich will die einfach vor google verstecken..
Ich hab mir heute wie oben schon erwähnt über die firefox- webdeveloperbar generierten Quelltext anzeigen lassen und hab gesehen dass mir der meta tag mitten in die Seite hineingerendert wird. Der gehört ja wie wir alle wissen in den head-Bereich- aber ich hab keien Ahnung was google macht wenn er im Quelltext einer Datei die UNBEDINGT indiziert werden soll dieser nofollow-Anweisung findet. Deshalb möchte ich das unbedingt vermeiden.. also..
zusammengefasst hier meine 4 Fragen:
1. Woher weiss ich dass google die Einträge in der robots.txt sehr wohl befolgt?
2. gibt es einen Weg dass ich meinem ajax-Request die meta-Einträge vermeide?
3. löst sich mein Problem wenn ich das meine Daten von einer xml-Datei ziehe?
4. oder löst sich das ganze wenn der ajax-Request an ein onclick-Event binde?
Danke! ihr seid grossartig ich weiss das sehr zu schätzen!
Lg, Milaean
Hi,
"Was du per AJAX in irgendeine andere Seite hineinlädst, interessiert Googles Bot doch überhaupt nicht."
Ist das so? Warum laden die dann im Index?
Weil das zwei verschiedene Dinge sind.
Du hast einmal die Seite, in die du den anderen Inhalt per AJAX hinein lädst – davon sieht der Google-Bot nur den HTML-Code, den dein Server für diese Seite ausliefert.
Und dann hast du den Inhalt, den du hinein lädst – der hat natürlich auch eine Adresse, und wenn der Google-Bot diese irgendwo findet (ja, das kann vielleicht auch in deinem JavaScript-Code gewesen sein, insb. wenn der direkt im ersten HTML-Dokument steht), und der Bot neugierig ist, fordert er die auch mal an.
Ich hab mir heute wie oben schon erwähnt über die firefox- webdeveloperbar generierten Quelltext anzeigen lassen und hab gesehen dass mir der meta tag mitten in die Seite hineingerendert wird. Der gehört ja wie wir alle wissen in den head-Bereich- aber ich hab keien Ahnung was google macht wenn er im Quelltext einer Datei die UNBEDINGT indiziert werden soll dieser nofollow-Anweisung findet.
Er findet sie nicht, weil er kein AJAX ausführt.
Der einzige Ort, an dem er sie findet, ist die Adresse, von der du den Inhalt nachlädst – und der *soll* ja nicht indiziert werden.
Also ist eigentlich alles in bester Butter bzw. Ordnung.
- Woher weiss ich dass google die Einträge in der robots.txt sehr wohl befolgt?
- gibt es einen Weg dass ich meinem ajax-Request die meta-Einträge vermeide?
- löst sich mein Problem wenn ich das meine Daten von einer xml-Datei ziehe?
- oder löst sich das ganze wenn der ajax-Request an ein onclick-Event binde?
Du hast eigentlich gar kein Problem, bzw. siehst eins, wo keins ist.
MfG ChrisB
Moin!
Ich hab mir heute wie oben schon erwähnt über die firefox- webdeveloperbar generierten Quelltext anzeigen lassen und hab gesehen dass mir der meta tag mitten in die Seite hineingerendert wird. Der gehört ja wie wir alle wissen in den head-Bereich- aber ich hab keien Ahnung was google macht wenn er im Quelltext einer Datei die UNBEDINGT indiziert werden soll dieser nofollow-Anweisung findet.
Er findet sie nicht, weil er kein AJAX ausführt.
Bist du dir da sicher?
Dir ist vermutlich entgangen, dass Google den Chrome-Browser herstellt. Der Browser kann Javascript. Der Browser kann außerdem nach Hause telefonieren.
Damit hast du schon mindestens zwei Wege, über die der Google-Bot "versteckte" URL-Aufrufe auf Webseiten finden kann:
1. Entweder sagt der Browser ihm, dass sein User per Javascript auf einer Seite noch eine andere Seite aufgerufen hat.
2. Oder der Google-Bot liest nicht nur die HTML-Daten, sondern führt auch ein wenig vom Javascript aus, oder scannt den Code einfach nur nach ein paar URLs.
Die andere Möglichkeit wäre natürlich, dass sich die führende Suchmaschine der Welt auf ihren Lorbeeren ausruht und derartige Versuche, den Inhalt einer Website zu erfassen, um den Usern bessere Suchergebnisse zu liefern, unterlässt, damit die Konkurrenz eine Chance hat, auf diesem Feld aufzuholen... klingt eher unwahrscheinlich.
- Sven Rautenberg
Hi,
Ich hab mir heute wie oben schon erwähnt über die firefox- webdeveloperbar generierten Quelltext anzeigen lassen und hab gesehen dass mir der meta tag mitten in die Seite hineingerendert wird. Der gehört ja wie wir alle wissen in den head-Bereich- aber ich hab keien Ahnung was google macht wenn er im Quelltext einer Datei die UNBEDINGT indiziert werden soll dieser nofollow-Anweisung findet.
Er findet sie nicht, weil er kein AJAX ausführt.
Bist du dir da sicher?
Ich bezog mich hier nicht auf die *Adresse* des per AJAX nachgeladenen Inhaltes (dass Google die auf dem einen oder anderen Weg finden wird, bestreite ich keineswegs) – sondern auf die „nofollow-Anweisung“, die durch das nachladen des Inhaltes irgendwo im aktuellen Dokument landet. (Die im Ausgangsposting übrigens noch "noindex, follow" war, was ja auch mehr Sinn ergibt hier.)
Die sieht der Google-Bot nicht im aktuellen Dokument (*weil* sie lediglich per AJAX in dieses hinein geladen wurde) – oder siehst du das anders?
Dir ist vermutlich entgangen, dass Google den Chrome-Browser herstellt. Der Browser kann Javascript. Der Browser kann außerdem nach Hause telefonieren.
Was Chrome letztendlich als DOM sieht, wird Google aber nicht zur Indizierung des Inhaltes des Dokumentes nutzen.
Damit hast du schon mindestens zwei Wege, über die der Google-Bot "versteckte" URL-Aufrufe auf Webseiten finden kann
Noch mal, um die Adresse des nachgeladenen Inhaltes ging es nicht.
Unter dieser Adresse wird ja auch schön "noindex, follow" per Meta-Element mit ausgegeben – also sollte der Bot wissen, dass er diesen nachgeladenen Inhalt *nicht* separat in den Index aufnehmen soll.
MfG ChrisB
Hallo,
"> Ich bezog mich hier nicht auf die *Adresse* des per AJAX nachgeladenen Inhaltes (dass Google die auf dem einen oder anderen Weg finden wird, bestreite ich keineswegs) – sondern auf die „nofollow-Anweisung“, die durch das nachladen des Inhaltes irgendwo im aktuellen Dokument landet. (Die im Ausgangsposting übrigens noch "noindex, follow" war, was ja auch mehr Sinn ergibt hier.)"
Ja sorry... das schreibe ich immer falsch, ständig eig. das muss ich mir auch mal abgewöhnen ;/
ich meine natürlich noindex, follow.
Wie dem auch sei, ich habe jetzt nochmals in meinen Webmastertools nachgeschaut, hätte ich besser mal von Anfang an genauer lesen sollen.
Mir werden unter dem Punkt "Crawling-Fehler" und dort wiederum unter "Soft/404" eben genau diese erzeugten Dateien aufgezeigt die ich in meinem ajax-Request aufrufe umd mir Inhalte zu ziehen.
Derzeit sieht der Quelltext der Datei noch so aus (Bsp.):
<div> bla bla</div>
Also nur html und Text! Kein body, kein Doctype, gar nichts.
Zum Thema Soft 404 sagt mir ein Infobutton daneben folgendes:
Die Ziel-URL existiert nicht, aber Ihr Server gibt keinen 404-Fehler "Datei nicht gefunden" zurück.
Ich bitte um Entschuldigung wenn ich da jetzt Verwirrung gestiftet habe. Aber es kam dann gleich die panische Aufforderung da sofort den entsprechenden Meta Tag einzubauen damit dieser Fehler unterbunden wird. Und das wiederum hat zu den oben beschriebenen Problemen geführt nämlich dass dieser einfach mit in den Quelltext gezogen wird. Und das ist mir gerade wieder zu unheimlich so etwas online zu stellen wer weiss was dann wieder mit den Inhalten auf der ZIELseite passiert.. nicht dass die aus dem Index fliegen...
Die Frage ist jetzt wie kann ich diesen Crawling-Fehler beseitigen? Es ist ja nicht so dass die Seite nicht existiert es gibt sie ja sehr wohl und ich brauche ja auch den Inhalt der drinnen steht. Also ich verstehe das so dass google denkt es wäre eine Fehlerseite aber der Server liefert 200 zurück (oder 302)...?
Oh mann verwirrung verwirrung..
Vielleicht habt ihr noch Ideen? Danke und lg.
Om nah hoo pez nyeetz, Milena!
Bitte lass die Zitatmarkierungen so wie sie sind. Sie werden von der Forumssoftware erkannt und der entsprechende Text wird dann als Zitat ausgezeichnet. Wenn du Zitatzeichen einfügen möchtest, findest du in der Leiste oberhalb dieses Textfeldes ganz links das Zitatzeichen. In diesem Forum kann man sich sein eigenes Zitatzeichen wählen, meins ist ‚»»‘
Dies sollte als Zitat kenntlich gemacht sein, als unangemeldeter Nutzer siehst du ‚>‘.
Dies ist ein von mir falsch eingefügtes Zitatzeichen, der Text sollte nicht als Zitat ausgezeichnet werden.
Matthias
Moin!
- Woher weiss ich dass google die Einträge in der robots.txt sehr wohl befolgt?
Vertraue ihnen in diesem Punkt. Die Webmastertools geben dir Auskunft darüber, was Google zu deiner robots.txt sagt, insbesondere würden sie dort vermutlich auch melden, wenn du irgendwelche Fehler eingebaut hast. Meine Erfahrung: Der Dateiinhalt ist extrem case-sensitive, insbesondere bei den Keywords! Also mit anderen Worten: Selbst wenn Google auf die Groß/Kleinschreibung liberal reagiert und mehrere Versionen zulässt, gilt das nicht für den Rest der Suchmaschinen.
- gibt es einen Weg dass ich meinem ajax-Request die meta-Einträge vermeide?
Wenn du Google misstraust, robots.txt zu beachten (dies ist nicht der Fall), dann musst du ihnen auch misstrauen, die Meta-Einträge zu beachten - also musst du in so einem Fall eigentlich einen Scanner für User-Agent-Strings bauen, der den Google-Bot erkennt und ihm den Dateiinhalt vorenthält. Was aus SEO-Sicht auch wieder doof ist, weil der Google-Bot zur Kontrolle auch mal mit normalen Browser-User-Agents vorbei kommt, und deine Seite bestraft wird, wenn der normale Browser was ganz anderes zu sehen bekommt, als der Bot.
- löst sich mein Problem wenn ich das meine Daten von einer xml-Datei ziehe?
Nein.
- oder löst sich das ganze wenn der ajax-Request an ein onclick-Event binde?
Nein.
- Sven Rautenberg