Redirigir URLs antiguas del foro a URLs nuevas de Discourse usando permalinks

Redirección de URLs antiguas de foros a nuevas URLs de Discourse usando enlaces permanentes

Si ha migrado de otro software de foro a Discourse utilizando uno de nuestros scripts de importación, probablemente querrá que todos sus resultados de búsqueda de Google bien merecidos sigan apuntando al mismo contenido. Discourse tiene una forma incorporada de manejar esto para usted como alternativa a escribir reglas de nginx, utilizando la tabla de búsqueda de enlaces permanentes (permalinks lookup table).

La tabla de enlaces permanentes le permite establecer dos cosas: una URL que coincidir, y a qué debe apuntar esa URL. Hay algunas opciones para definir dónde debe redirigirse la URL. Establezca una de estas:

  • topic_id: para mostrar un tema
  • post_id: para mostrar una publicación específica dentro de un tema
  • category_id: para mostrar una categoría
  • tag_id: para mostrar una etiqueta
  • user_id: para mostrar un perfil de usuario
  • external_url: para redirigir a una URL que podría no pertenecer a su instancia de Discourse

Por ejemplo, si las URLs de los temas de su foro original eran como http://example.com/discussion/12345, y la URL de ese tema después de la importación es http://example.com/t/we-moved/987, entonces puede configurar el mapeo de esta manera:

cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)

Discourse realizará entonces una redirección con código de estado de respuesta http 301 (movido permanentemente) a la URL correcta para el id de tema 12345. El 301 debería hacer que los motores de búsqueda actualicen sus registros y comiencen a usar las nuevas URLs.

Si desea que algunas URLs se redirijan fuera de Discourse, puede hacerlo estableciendo external_url:

Permalink.create(url: '/discussion/12345', external_url: 'http://archived.example.com/discussion/12345')

Información Adicional

Para encontrar el id de una subcategoría, puede buscarlo por su slug de esta manera:

Category.find_by_slug('products').id

Para eliminar el enlace permanente para esa URL, haga esto:

Permalink.find_by_url("/blah").destroy

Solo puede haber un registro de enlace permanente por URL, así que simplemente busque por URL.

Creación de un mapa de temas de MyBB a Discourse

Preguntas sobre redirección de Discourse a WordPress

Normalización de Enlaces Permanentes


Última Revisión por @SaraDev en 2022-06-03T20:00:00Z

37 Me gusta