Kanonische Struktur für /u/* verursacht, dass viele URLs indiziert werden

Ursprünglich habe ich das für die Kategorie „Bug“ geschrieben …

… aber ich will Sie nicht aufhalten, falls jemand der Meinung ist, dass dies einen PR oder Commit rechtfertigt :crossed_fingers:

Ich habe mich in den letzten 2 Monaten intensiv mit der kanonischen Struktur von Discourse beschäftigt und insgesamt ist sie großartig.

Seltsame URLs mit Dingen wie no_definitions=true oder /search?q= geben die korrekte kanonische URL an.

Dies funktioniert alles, wenn die JS-Version der Website sowohl für Benutzer als auch für Crawler bereitgestellt wird.

Aber es scheint, dass die URLs /u/* übersehen wurden – sie haben zwar Kanonische, aber zu URLs, die dazu führen, dass Tausende von zusätzlichen URLs von Google indiziert werden.

Die Aufgabe:

Ich möchte, dass alle URLs nach dem Benutzernamen auf die Hauptseite des Benutzerprofils kanonisch verweisen.

Also ist /u/FlyNumber die Hauptprofilseite.

Die folgenden URLs würden eine kanonische Verweisung auf die obige haben (anstatt dessen, was jetzt passiert, nämlich eine kanonische Verweisung auf sich selbst):

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1 „Gefällt mir“

Ist das für Ihr benutzerdefiniertes Indexierungs-Setup, das hier besprochen wurde?

Wenn ja, könnte es hilfreich sein, dies zu erwähnen, damit diejenigen, die sich den Job ansehen, wissen, worauf sie sich einlassen.

Standardmäßig werden /u/-URLs nicht indiziert, was sowohl in der robots.txt festgelegt als auch in der anfänglichen Header-Anfrage auf der Seite übergeben wird.

image

4 „Gefällt mir“

Nein, da ich die Verwendung von Prerender eingestellt habe – es konnte das Hauptmenü, die Anmeldeschaltfläche usw. nicht rendern.

Der Google-Bot erhält die „App“ direkt.

Ich habe die versteckte Website-Einstellung von Discourse so eingestellt, dass Crawler die JS-Version erhalten. Google scheint damit gut zurechtzukommen. (Weitere Updates dazu bald.)

Guter Punkt, „/badges“ auch…

Ich verwende eine benutzerdefinierte robots-Datei.

Ich verwende Cloudflare Workers, um den Header zu ändern, um ihn auf „index“ zu setzen.

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges

Ich möchte auch darauf hinweisen, dass das Entfernen der Kanoniker für diese URLs ein Schritt in die richtige Richtung wäre. (Meiner Meinung nach ist meine Methode besser für SEO)

Wie oben erwähnt, ist sie auf noindex gesetzt, daher bin ich mir nicht sicher, warum Discourse überhaupt einen Kanoniker generiert.

Vielleicht kennt jemand eine clevere Methode, dies mit JS und Cloudflare Workers zu tun? So vermeide ich es, den Discourse-Code zu verändern.

Ich kann einen “Trigger” auf <s</u/*/summary</s> einrichten - (ich kann nur auf /u/* triggern) - und etwas wie das hier ausführen:

const canonical = document.querySelector('link[rel="canonical"]');
if (canonical !== null) {
  canonical.href = 'NEUER_HREF_KOMMT_HIER_HER';
}

Was kann ich hier tun, um den Benutzernamen an NEUER_HREF_KOMMT_HIER_HER weiterzugeben - und der kanonische Link wäre am Ende /u/* statt /u/*/summary.

Jede Hilfe hier wird sehr geschätzt.

Bearbeiten
Vielleicht kann mich jemand auf die relevanten GitHub-Seiten verweisen - ich werde mein Glück mit der Code-Bearbeitung versuchen.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.