Struttura canonica per /u/* causa l'indicizzazione di molti URL

Inizialmente, ho scritto questo per la categoria “Bug”…

… ma non lasciate che vi fermi se qualcuno ritiene che questo meriti una PR o un commit :crossed_fingers:

Ho studiato a fondo la struttura canonica di Discourse negli ultimi 2 mesi e nel complesso è ottima.

URL strani con cose come no_definitions=true o /search?q= forniscono il canonico corretto.

Tutto questo funziona quando si serve la versione JS del sito sia agli utenti che ai crawler.

Ma sembra che gli URL /u/* siano stati trascurati: hanno dei canonici, ma verso URL che causano l’indicizzazione di migliaia di URL aggiuntivi da parte di Google.

Il compito:

Vorrei che tutti gli URL dopo il nome utente puntassero al canonical della pagina principale del profilo utente.

Quindi /u/FlyNumber è la pagina del profilo principale.

I seguenti avrebbero un canonical a quello sopra (invece di quello che succede ora, che è un canonical a se stesso):

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1 Mi Piace

È per la tua configurazione di indicizzazione personalizzata discussa qui?

Se è così, potrebbe essere utile notarlo in modo che coloro che esaminano il lavoro sappiano in cosa si stanno cacciando.

Per impostazione predefinita, gli URL /u/ non vengono indicizzati, il che è impostato sia in robots.txt sia passato nella richiesta di intestazione iniziale sulla pagina.

image

4 Mi Piace

No, poiché ho smesso di usare prerender: non riusciva a renderizzare il menu principale, il pulsante di accesso, ecc.

Il bot di Google sta ricevendo direttamente l’“app”.

Ho impostato l’impostazione del sito nascosta di Discourse per servire ai crawler la versione JS. Google sembra gestirla bene. (Ulteriori aggiornamenti a riguardo presto.)

Buon punto, anche /badges

Sto usando un file robots modificato personalizzato.

Sto usando i worker di Cloudflare per modificare l’intestazione su 'index'.

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

Vorrei anche sottolineare che la rimozione completa dei canonical per tali URL sarebbe un passo nella giusta direzione. (IMHO il mio metodo è migliore per la SEO)

Come affermato sopra, è impostato su noindex, quindi non sono sicuro del motivo per cui Discourse genera comunque il canonical.

Forse qualcuno conosce un modo intelligente per farlo con JS e Cloudflare workers? In questo modo evito di modificare il codice di Discourse.

Posso impostare un “trigger” su /u/*/summary - (posso attivare solo su /u/*) - ed eseguire qualcosa di simile a questo:

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

Cosa posso fare qui per passare il nome utente a NEW_HREF_GOES_HERE - e il canonical finirebbe per essere /u/* invece di /u/*/summary.

Qualsiasi aiuto qui è molto apprezzato.

Modifica
Forse qualcuno può indicare le pagine GitHub pertinenti - tenterò la sorte modificando il codice.

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