Laut Google selbst und einer anderen Frage hier führen Googles Bots JavaScript auf gecrawlten Websites aus und indizieren den gerenderten Inhalt.
Jedoch,
[a] Laut [der] Erfahrung [mindestens dieses einen Unternehmens] wird der Großteil der JavaScript-basierten Funktionen zwar von Googlebot verstanden, der von der XMLHttpRequest-API aus einer externen Quelle abgerufene Inhalt wird jedoch durchweg nicht gecrawlt - oder so weiter auf dieser API aufgebaut oder damit verbunden. Dieses Verhalten tritt in reinem JavaScript, jQuery, AngularJS oder anderen modernen JavaScript-Frameworks auf. Wenn Sie Inhalte von einer "externen" URL abrufen oder einen REST-API-Endpunkt aufrufen müssen, um einige Daten abzurufen, besteht die Möglichkeit, dass diese nicht ordnungsgemäß gecrawlt und indiziert werden.
(Hervorhebung von mir) Dieses Verhalten ist jetzt auch zu beobachten:
- Wir haben eine Reaktions-App , die in die Website eines Kunden integriert ist. Die Zielseite ist eine Liste von Dingen mit Links zu einer Unterseite für jede (
<a data-reactid="0.1.2.3.4" href="https://webmasters.stackexchange.com/some/site/itemid/9876">
) - Die Zielseite wird in der Google-Suchkonsole korrekt gerendert ("So hat Googlebot die Seite gesehen" ist visuell gleich "So hätte ein Besucher Ihrer Website die Seite gesehen")
- Der Inhalt der Zielseite finden Sie in den Suchergebnissen von Google.
- In naher Zukunft kann kein Inhalt einer Unterseite über Google gefunden werden (Wochen später ist der Inhalt eines Bruchteils der Unterseiten) .
Hier ist eine Demo- React- App mit von React / JS generierten Links und Unterseiten, die korrekt indiziert wurden. Der Hauptunterschied besteht, wie erwähnt, darin, dass wir den Inhalt der Unterseiten von einem externen Server abrufen. Daran führt kein Weg vorbei - wir haben den Inhalt, aber die Website, auf der er gerendert werden soll, enthält nur unser js-Skript und ein Element, in das er gerendert werden soll. Wir haben keine weitere Kontrolle über die Website, geschweige denn über den Server, auf dem sie ausgeführt wird.
Ist das obige Zitat korrekt oder fehlt mir etwas?
our-clients-site.com/some/site
, der geladen wird oursite.com/app.js
, der dann Daten von oursite.com/api/item...
der Seite abruft und die Seite rendert. Wir kontrollieren also tatsächlich die API-Site, aber nicht die tatsächlich besuchte. (Sorry, habe deinen Kommentar letzte Woche verpasst. Trotzdem danke. :-))