Fallo en la reescritura de rutas del lado del cliente con configuración de subcarpetas

Continuando la discusión de Discourse rewriting url path behaviour failing due to subfolder:

Tengo exactamente el mismo problema que en el tema mencionado, en el que la URL se reescribe solo en escenarios donde el inicio de una subruta coincide con la subcarpeta. Estoy usando /f como subcarpeta; entiendo las advertencias y dificultades de esta configuración, pero todo lo demás funciona bien, por lo que me gustaría recibir ayuda para solucionarlo, si es posible.

No estoy utilizando una ruta existente de Discourse, pero si el problema es la subcarpeta de una sola letra, me gustaría intentar solucionarlo antes de considerar una configuración diferente.

Algunas rutas que se reescriben:

  • /f/t/food-chain-magnate/4826/f/tood-chain-magnate/4826
  • /f/tag/food-chain-magnate/f/tagood-chain-magnate
  • /f/u/renato/follow/following/f/u/renatoollow/following
  • /f/u/fred/summary/f/ured/summary

Al ser una reescritura del lado del cliente, hacer CURL a las mismas URLs funciona correctamente.

Este es el commit que originalmente solucionó el problema, pero getURL ha cambiado para usar los helpers get-url en lugar de Discourse.BaseUri.

Siguiendo las llamadas a ese getURL, location.pathname es correcto en la primera llamada (comenzando con /f), pero en una de las siguientes llamadas la subcarpeta se elimina y pasa a ser /t/f-started-slug/id, lo que hace que este reemplazo actúe sobre ese /f.

No conozco lo suficiente los internos de Discourse para entender completamente dónde se está produciendo esta reescritura, pero probando en mi instancia, forzar el reemplazo en withoutPrefix para que solo actúe al inicio de path parece solucionarlo.

// cambiando ...
return path.replace(rootURL, "");
// a algo como ... (asumiendo que rootURL no necesita ser escapado)
return path.replace(new RegExp("^" + rootURL), "")
// o sin regex ...
return path.indexOf(rootURL) === 0 ? path.slice(rootURL.length) : path;

No sé si eso sería una posible corrección o si introduciría alguna regresión; cualquier ayuda será apreciada.

1 me gusta

Bueno, una búsqueda mejor en los temas existentes me habría llevado a una respuesta de ayer que podría solucionar esto…
https://meta.discourse.org/t/two-bugs-with-usernames-starting-with-subfolder-name/169505/6

EDITO: Acabo de actualizar a 70050a8ba3 y el problema persiste.

2 Me gusta

Lo revisaré cuando tenga tiempo.

4 Me gusta

Efectivamente, así parece. Gracias por la investigación y el informe del error. Este PR debería solucionarlo:

¿Podrías probarlo @renato?

2 Me gusta

¡Ahora funciona genial, gracias!

2 Me gusta

Este tema se cerró automáticamente después de 7 días. Ya no se permiten nuevas respuestas.