Siéntete libre de visitar https://sales-community-staging.rainmakers.co/sales-community/ para ver el problema. No hay garantías de que esté disponible para siempre. Creo que esto se debe a que no está agregando /sales-community a la URL. Avísame si te sería útil que proporcione app.yml o nginx.conf. Esto está en version: tests-passed. Intenté version: stable para solucionarlo, pero no compila en Docker en este momento (mencionado en otro informe de error que vi antes; estaba comenzando de cero, no bajando de versión).
Sí. Todo lo demás funciona (publicaciones, correos electrónicos, carga de avatares, HTTPS, etc.). Todos los demás recursos tienen las URL correctas en la subcarpeta /sales-community (como se muestra en la imagen). Solo el SVG está roto.
Sí, el problema no es con CSP porque la URL simplemente está mal; aparentemente no se le está agregando el prefijo de la ruta de la subcarpeta. Creo que hay que añadirlo aquí?
Tenemos toda la lógica en su lugar para los sprites SVG en escenarios de subcarpetas, y varios sitios la utilizan con éxito. En este caso, nos hemos encontrado con un caso límite muy específico. Al verificar las variables clave en el sitio de @vkozyrev (en la consola del navegador):
Todo parece correcto. Ahora, al cargar la hoja de sprites SVG, usamos loadScript, que a su vez llama a Discourse.getURL. Esta función es la responsable de agregar el prefijo de la subcarpeta. Probémoslo:
Una investigación más detallada revela esta línea dentro de getUrl:
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
O, en español: “si la URL ya contiene el prefijo de la subcarpeta, no hacer nada”. Por lo tanto, el problema aquí es que el prefijo de la subcarpeta de @vkozyrev (/sales-community) está incluido en medio de la URL de la hoja de sprites SVG:
He hecho la verificación más específica, de modo que solo verifica el prefijo de la subcarpeta al inicio de la URL:
Aunque esto me hace pensar en otros problemas potenciales… por ejemplo, si alguien quisiera que su prefijo de subcarpeta fuera /t o /about, o cualquier otra URL que usamos en Discourse
¡Qué caso límite tan increíble! . Trabajo en desarrollo de Rails (solo modo API), y me alegra no haberme adentrado demasiado en ese laberinto, o me habría perdido en el código del cliente.
Por si te da curiosidad, tengo un proxy delante de esto, así que el subdominio sales-community está oculto para los usuarios; solo verán /sales-community al principio de la URL de nuestro sitio principal. El sitio principal está en Heroku, así que no puedo usar una única instancia de nginx para enrutar todo.
¡Gracias por las respuestas rápidas y la solución a todos!