Estructura canónica para /u/* causando que muchas URLs sean indexadas

Inicialmente, escribí esto para la categoría “Bug”…

… pero no dejen que les detenga si alguien siente que esto debería merecer una PR o un commit :crossed_fingers:

He estado estudiando la estructura canónica de Discourse con mucho ahínco los últimos 2 meses y, en general, es genial.

Las URLs extrañas con cosas como no_definitions=true o /search?q= dan el canónico correcto.

Todo esto funciona al servir la versión JS del sitio tanto a usuarios como a rastreadores.

Pero parece que las URLs /u/* fueron pasadas por alto: tienen canónicos, pero a URLs que están causando que Google indexe miles de URLs adicionales.

El trabajo:

Me gustaría que todas las URLs después del nombre de usuario apunten canónicamente a la página principal del perfil de usuario.

Así, /u/FlyNumber es la página principal del perfil.

Lo siguiente tendría un canónico a lo anterior (en lugar de lo que sucede ahora, que es un canónico a sí mismo):

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1 me gusta

¿Es esto para tu configuración de indexación personalizada discutida aquí?

Si es así, podría ser útil notarlo para que quienes vean el trabajo sepan en qué se están metiendo.

Por defecto, las URL /u/ no se indexan, lo cual está configurado tanto en robots.txt como se pasa en la solicitud de encabezado inicial en la página.

image

4 Me gusta

No, ya que dejé de usar prerender; no podía renderizar el menú principal, el botón de inicio de sesión, etc.

Google bot está recibiendo la “app” directamente.

Tengo la configuración oculta del sitio de Discourse configurada para servir la versión JS a los rastreadores. Google parece manejarlo bien. (Más actualizaciones sobre eso pronto).

Buen punto, /badges también…

Estoy usando un archivo robots editado personalizado.

Estoy usando Cloudflare workers para alterar el encabezado a 'index'.

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

También me gustaría señalar que eliminar por completo los canónicos para esas URL sería un paso en la dirección correcta. (En mi humilde opinión, mi método es mejor para el SEO)

Como se mencionó anteriormente, está configurado como noindex, así que no estoy seguro de por qué Discourse genera el canónico en absoluto.

¿Quizás alguien conoce una forma ingeniosa de hacer esto con JS y Cloudflare Workers? De esta manera evito modificar el código de Discourse.

Puedo configurar un “disparador” en /u/*/summary - (solo puedo disparar en /u/*) - y ejecutar algo como esto:

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

¿Qué puedo hacer aquí para pasar el nombre de usuario a NEW_HREF_GOES_HERE - y que el canónico termine siendo /u/* en lugar de /u/*/summary?

Cualquier ayuda aquí es muy apreciada.

Editar

Quizás alguien pueda señalar las páginas relevantes de GitHub - me arriesgaré a editar el código.

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