Última actualización rompe permalink para categorías

Con la última actualización, el permalink de la categoría está roto, los permalinks de los temas funcionan bien.
Por ejemplo: category/11562 redirige a c/11562 lo cual es incorrecto, la redirección que está correctamente configurada como destino debería ser c/general/4 o c/4
¿Alguien podría ayudar con este problema?

¿Creaste un permalink para category/11562 que solía redirigir a general, pero ahora está roto?

1 me gusta

¿De qué rama de actualización es?

Correcto, solía funcionar bien. Luego, actualicé a:

<meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version 0bb492c6b6b79389a12b277b9d25b99e75f2625d">

Limpié completamente la base de datos para reimportar datos de otro foro desde cero, y ahora no funciona.

Creo que este es el problema, porque no puedo reproducir esto en pruebas pasadas hasta esta mañana.

¿Puedes ver si el permalink todavía está en tu base de datos y si todavía apunta al lugar correcto?

3 Me gusta

Volví a añadir los permalinks con la nueva importación, se hace mediante el script de importación. Pero también intenté añadirlos manualmente a través de la web. Por favor, adjunto una captura de pantalla de la web y los resultados de la base de datos. Quizás me estoy perdiendo algo:

Lo siento, solo se permitía una captura de pantalla por publicación

Tu permalink no está en /category/11562 sino en /forum/category/11562.

Mi suposición rápida es que perdiste tus normalizaciones de permalink en el camino.

3 Me gusta

No entiendo si reviso la respuesta a https://preview.vaadin.com/forum/category/11562

Recibo un 302 con Location:
https://preview.vaadin.com/forum/c/11562

Mientras que para temas, por ejemplo:
https://preview.vaadin.com/forum/thread/851770

Recibo un 301 con Location:
https://preview.vaadin.com/forum/t/tabsheet-tabs-not-displaying-properly-in-ie8-after-upgrade-to-6-7-1/173931

Espero que Discourse gestione ambos por igual, y como puedes ver, ambos conservan el segmento /forum/

1 me gusta

Entonces no mencionaste el hecho de que todo tu foro es una instalación en una subcarpeta.

4 Me gusta

Así que profundicé un poco más y no entiendo cómo esto podría haber funcionado alguna vez, ya que category/ siempre activará la ruta de redirección de categories#, y esto no ha cambiado recientemente.

get "category/*path" => "categories#redirect"

EDIT: la publicación a continuación muestra que sí solía funcionar.

1 me gusta

Sí. No puedo empezar a entender cómo funcionarían los permalinks y las permalink_normalizations en una instalación en una subcarpeta.

¿Y siempre ha sido una instalación en una subcarpeta?

¿Y no cambió nada más cuando volviste a ejecutar el script de importación?

Parece lo más probable es que algo sea diferente en tu script.

Espera. https://meta.discourse.org/category/67 redirige a Announcements - Discourse Meta, así que . . . no, pero hay una especificación que muestra que los permalinks anulan esa redirección de /category y tiene 4-5 años.

Así que creo que crearía algunas redirecciones de categorías manualmente a continuación para averiguar qué está pasando (como /category/micategoria u otra cosa que ni siquiera tenga números).

2 Me gusta

Buen hallazgo @pfaffman , esa prueba significa que debería haber funcionado de hecho.

1 me gusta

¡Vaya, ni siquiera sabía que eso era posible!

Sí, es bastante genial, mira Serve Discourse from a subfolder (path prefix) instead of a subdomain

4 Me gusta

¡Gracias por todas sus respuestas!

Curiosamente, descubrimos que los permalinks para categorías funcionan desde una subcarpeta solo si no hay una ruta llamada /category/ en la URL de origen. Como mencionó @pfaffman en su respuesta. Por ejemplo, /forum/category_foo/123 redirige correctamente a la categoría general de destino.
Discourse captura /category/ y lo reemplaza por /c/
En consecuencia, esto se puede resolver muy fácilmente:
añada un permalink desde /c/11562, que es la redirección de la antigua category/11562 a la categoría General /c/4.

Y tenías razón, la primera instalación fue sin subcarpeta, pero la segunda sí la tuvo, esta es la tercera. Y probamos, y creo que funcionó las dos primeras veces. Lo único que cambió entre la segunda y la tercera es que no limpiamos la base de datos entre la primera y la segunda, y para la tercera fue una instalación limpia con una nueva base de datos fuera de docker (además de la actualización a Discourse v3). Así que sospecho que algo ha cambiado en la beta de Discourse v3. De lo contrario, ¿por qué ha funcionado alguna vez, incluso sin subcarpeta?

1 me gusta

Aquí tienes tu respuesta

Si entendí bien, lo que quieres decir es que Discourse solo aplica la redirección de /category/ a /c/ si hay un segmento en la ruta.

No obstante, si uso tu foro como ejemplo: https://meta.discourse.org/ y pongo https://meta.discourse.org/category/1 me redirige a https://meta.discourse.org/c/bug/1

Que es lo mismo que experimentamos con nuestra instalación, sería imposible que tu sitio también se redirigiera de /category/#old_number a /c/#real_category, siempre terminarías en /c/#old_number.