Mis URL antiguas del foro tienen el formato /posts/t{topic_id}-{url_slug}.
He utilizado el Permalink de Discourse para mapear las URL antiguas del foro a las nuevas URL de Discourse.
El problema es que el Rails Router está enrutando las solicitudes de las URL antiguas del foro a una de las rutas asociadas con el recurso “posts”. (No sé a cuál ruta).
La Normalización de Permalinks se ejecuta después de que se realiza el enrutamiento, por lo que no es una solución.
Creo que la solución es agregar una ruta personalizada en config\routes.rb para omitir el manejo de solicitudes por el PostsController si la URL tiene el formato /posts/t{topic_id}-{url_slug}, pero no tengo suficientes conocimientos de Rails Routing para hacer este cambio. ¿O tal vez esta no es la forma correcta?
¿Cómo son? ¿Cuáles son los permalinks que añadiste?
¿El foro ya está en vivo o todavía puedes ejecutar el script de importación? (De hecho, puedes hacer un script de Ruby que puedas ejecutar en Rails para añadir Permalinks como los que describo).
Creo que quizás quieras hacer tus Permalinks algo como /oldforum/{topic_id} y luego añadir alguna configuración a nginx para capturar esas URL /posts/t y remapearlas a /oldforum/{topic_id}.
Así que (según la IA) harías un replace con pups (en breve podrás añadirlo a un outlet, pero no sé cuándo sucederá) para añadir esto a tu configuración de nginx discourse.conf:
# Coloca esto dentro de tu bloque server {}
location ~ ^/posts/t(?<topic_id>\d+)-.*$ {
# Redirección permanente (301)
return 301 /oldforum/$topic_id;
# Alternativamente, para redirección temporal (302), usa:
# return 302 /oldforum/$topic_id;
}
Lo probaría haciendo esos cambios a mano dentro del contenedor y luego trabajaría hacia atrás para añadir los cambios a tu app.yml.
Descubrí que esta solución podría no ser viable porque la cadena de redirección afectará la puntuación SEO del sitio. Se necesitan dos redirecciones 301 y tres solicitudes para llegar a la publicación real.
Y luego, dejar que Permalink maneje la solicitud. Suena como que debería funcionar, pero no estoy seguro.