Perdona si he diagnosticado mal esto, pero recientemente he experimentado algunos problemas tras una actualización en una configuración de subcarpeta que funcionaba correctamente antes, así que creo que puede haber habido una regresión en algunos aspectos recientemente. En particular, estoy autoalojando Discourse usando la configuración de subcarpeta descrita aquí, que funcionaba sin problemas (por lo que puedo ver) hasta hace poco.
Actualmente, al iniciar sesión mediante SSO o al cambiar a/desde el modo anónimo (y quizás en otras situaciones que aún no he identificado), soy redirigido a https://mi_maquina/carpeta_discourse, en lugar de ser redirigido a https://mi_maquina/forum/carpeta_discourse. También ocurre que cuando voy a https://mi_maquina/forum (el punto final correcto), la barra de direcciones se reescribe para mostrar https://mi_maquina (sin la subcarpeta), aunque la mayoría de los enlaces parecen resolverse correctamente.
Lamentablemente, no recuerdo en qué commit estaba cuando todo funcionaba, pero estoy bastante seguro de que estaba bajo el paraguas de “2.4.0.beta10”, y probablemente fue hace unos 10 días. Actualmente estoy ejecutando la versión bd49d4af1a.
Me disculpo si solo estoy haciendo algo estúpido, y estoy encantado de ayudar a investigar el problema si hay sugerencias sobre dónde debería buscar.
Estamos utilizando el protocolo SSO de Discourse, que definitivamente funcionaba sin problemas antes. El intercambio de claves sigue pareciendo ocurrir correctamente, solo que al final redirige al lugar equivocado. La clave "return_sso_url" en la carga útil de SSO está llegando correctamente a nuestro punto de conexión SSO (con /forum).
También intenté una reconstrucción, pero no pareció solucionar el problema.
Lamentablemente, esto podría ser difícil de depurar, ya que no me siento cómodo dando acceso a personas ajenas, dado que esta instancia existe para una clase y no me siento cómodo compartiendo datos de estudiantes con terceros (¡incluso si confío en ti personalmente!). Pero si ayuda, estaré encantado de intentar replicar esta configuración en un servidor diferente al que podría darte acceso…
También veo que el enlace para entrar/salir del modo anónimo utiliza window.location.reload() para recargar la página después de enviar una solicitud a un endpoint para cambiar al modo anónimo. Por lo tanto, esa recarga definitivamente vería la URL reescrita (ya sin /forum), lo que causaría esto (no estoy seguro si es una historia similar para los problemas de SSO).
Voy a echar un vistazo a los conjuntos de cambios recientes para ver si lo que (creo?) reescribe window.location es una adición reciente.
Además, Discourse.getURL('/login') aún me da el resultado correcto (con /forum).
Las rutas se restablecen sin el prefijo de subcarpeta en la barra de direcciones del navegador.
Ejemplo:
Visito example.com/forum → después de que se carga el foro, la barra de direcciones muestra example.com
Luego hago clic en “Más recientes” → me navega a lo más reciente y la barra de direcciones muestra example.com/forum/latest
Actualizo la página en el navegador, el sitio se recarga y la barra de direcciones muestra example.com/latest
Cuando vuelvo a actualizar mientras estoy en example.com/latest, aparece un error 404 (porque mi nginx solo enruta /forum a Discourse).
La vista previa del enlace en la esquina inferior izquierda del navegador aparece como example.com/latest, example.com/new, etc. Al recargar un tema también se elimina /forum de la URL, pero luego vuelve a cambiar, regresando a /forum/t/[…].
Anteriormente estaba en la versión 2.4.0.beta2 y no recuerdo este problema.
¡Genial, gracias! Me alegra saber que no estoy loco.
Sin embargo, al explorar los commits recientes (más o menos), no pude ver un punto obvio donde ocurriera esta reescritura. ¿Sería posible que me indicaras dónde en el código esto ocurre/ocurría? (Estoy en proceso de familiarizarme con la base de código).
¡Lo sería! Solo no soy yo la persona indicada. Soy solo “ese tipo” del equipo que por casualidad tiene una instalación de subcarpeta local. Pero no soy ingeniero. David debería poder indicarte el camino correcto cuando comience a trabajar en el problema más adelante esta semana.