Tema con japonés en la URL no redirige si la URL no coincide perfectamente

En community.wanikani.com, abrir cualquier enlace a temas con caracteres japoneses en la URL completamente cualificada dejó de funcionar al abrirlos en una nueva pestaña o al copiar y pegar el enlace directamente. Hacer clic en el enlace para navegar dentro de la misma pestaña sigue funcionando.

Por ejemplo, abrir este enlace en una nueva pestaña debería redirigir a

キノの旅 Home Thread (Intermediate Book Club) - Book Clubs - WaniKani Community

Pero en su lugar intenta redirigir a

キノの旅 Home Thread (Intermediate Book Club) - Book Clubs - WaniKani Community

lo cual falla al cargar.

Si el enlace coincide exactamente, funciona correctamente. Pero, por supuesto, con los cambios de nombre de los temas esto a menudo no es así.

También intenté reproducirlo en try.discourse.org, pero en esa instalación los caracteres japoneses nunca se agregan a la URL, incluso cuando están incluidos en el título del tema. No estoy seguro de por qué ocurre eso, pero sin que esto suceda no puedo demostrar el error allí.

2 Me gusta

Ambos son enlaces al tema 34890. Ambos se cargan correctamente para mí en Firefox. ¿Cuál es el problema?

3 Me gusta

suspiro Parece que podría ser otro error de Chrome. Para mí funciona bien tanto en Firefox como en Edge. Curiosamente, funciona la primera vez en una ventana de incógnito, pero falla la segunda vez. Lo mismo ocurre después de borrar la caché y las cookies del sitio y reiniciar mi computadora.

Chrome indica que el error es demasiadas redirecciones.


¿Te importaría comprobarlo en Chrome para confirmar si es un problema general allí y no solo un problema mío? Solo asegúrate de intentar abrir la página varias veces, ya que la primera parece funcionar bien. ¡Agradezco mucho tu ayuda!

3 Me gusta

Puedo reproducirlo en Chrome móvil. :bug:

5 Me gusta

Gracias. Supongo que lo reportaré a Google.

1 me gusta

En mi teléfono Android con Chrome, el segundo enlace redirige indefinidamente.

1 me gusta

¿Todavía estás usando Chrome? Solo quiero asegurarme antes de reportarlo a ellos. Supongo que nada relacionado con esto ha cambiado recientemente en Discourse, ¿verdad? (De todos modos, esto probablemente seguiría siendo un problema de Chrome, ya que solo ocurre allí, incluso si algo hubiera cambiado en Discourse.)

3 Me gusta

Espera un momento, esto podría ser Discourse. Incluso podría ser un error del service worker.

5 Me gusta

De acuerdo, gracias por la actualización.

1 me gusta

¿Hay alguna actualización sobre esto?

Esto tomará un tiempo para resolverse; ya está asignado, por lo que no se quedará sin atención.

7 Me gusta

No espero encontrar ninguna solución o alternativa. Solo tenemos que esperar a que se solucione.

¿Sigues viendo este problema? Parece que quizás ya se solucionó, a menos que esté haciendo algo diferente esta vez.

1 me gusta

Bueno, olvidé eso. Volvió a ocurrir hoy. No tengo idea de cómo se solucionó por un tiempo.


Dado que esto podría tardar un poco, estaría abierto a soluciones alternativas por ahora. Mencioné en el mensaje original que en Try (y también verifiqué aquí en Meta) los caracteres japoneses nunca se agregan a la URL, lo que efectivamente evita este problema. ¿Es eso una configuración del sitio o de la categoría de la que puedo hablar con mi administrador del sitio? ¿Alguna otra sugerencia para una solución alternativa aparte de esa?

Cuando ingreso una URL con un título en árabe en el navegador, como:

https://forums.coretabs.net/t/2456

cazo en un bucle de redirecciones infinitas (y creo que el enlace generado no es correcto; esto probablemente esté relacionado con la codificación).

En su lugar, debería redirigir a:

https://forums.coretabs.net/t/ماذا-يجب-ان-نتعلم-في-javascript-؟/2456

¿Por qué no comparto los enlaces con sus títulos?

Debido al mal soporte del árabe en Twitter y Facebook:

  • Este error no existía antes de las últimas actualizaciones (la última vez que intenté compartir un enlace fue hace unas dos semanas y funcionaba perfectamente).
3 Me gusta

He revisado nuestro código y parece que el error es bastante sencillo, pero me gustaría verificar mis suposiciones.

Tenemos una configuración del sitio llamada slug_generation_method que debe cambiarse del valor predeterminado ascii a encoded para activar este error. Cuando cambias esta configuración del sitio, eliminamos todos los slugs y los generamos de nuevo.

Lo que no entiendo es por qué, cuando la configuración del sitio está establecida en “encoded”, generamos un slug de esta manera:

[3] pry(main)> SiteSetting.slug_generation_method
=> "encoded"
[4] pry(main)> Slug.for(t.slug)
=> "キノの旅-home-thread-intermediate-book-club"

cuando esperaba que “encoded” significara algo como:

[5] pry(main)> CGI.escape(Slug.for(t.slug))
=> "%E3%82%AD%E3%83%8E%E3%81%AE%E6%97%85-home-thread-intermediate-book-club"

Esto parece provenir de:

El slug sin procesar de la tabla se devuelve en la cabecera Location de la respuesta 301 cuando el slug de un tema no coincide y, en mi opinión, deberíamos devolver una URL válida allí.

9 Me gusta

Sí, deberíamos limpiar el método de generación de slugs para ‘encoded’ para que dependa menos de la magia del navegador.

8 Me gusta

¿Entonces estás diciendo que la propia URL mostraría la versión codificada? ¿O simplemente que la redirección la manejaría internamente usando la versión codificada? De cualquier manera, sería genial que esto funcionara “por sí solo” y no dependiera de peculiaridades del navegador.

1 me gusta

Hola,

¿Se ha resuelto este caso?
Porque aún estoy experimentando este problema, como mencioné en el tema que inicié sobre este asunto.

1 me gusta

No, como indica el tema abierto en la categoría bug aquí :sweat_smile:

@sam Volví a revisar esto hoy y hay dos formas de abordarlo:

  1. Almacenar un slug codificado real en la columna slug cuando la configuración de generación de slugs esté establecida en codificado. Crear una migración para borrar todos los slugs actuales cuando se usan slugs codificados, para que se regeneren correctamente con el tiempo.

  2. Mantener el slug UTF-8 actual y corregirlo sobre la marcha al enviarlo en una cabecera para una redirección 301.

En mi opinión, la opción 1 es “más correcta” y hará más difícil pasar el slug sin procesar a un cliente. Sin embargo, simplemente corregir el generador de slugs no fue suficiente, ya que los navegadores reciben una URL codificada en la redirección 301 pero la decodifican para la siguiente solicitud, lo que hace que nuestra comparación de slugs falle y se redirija de nuevo. Eso significa que también tendré que corregir el método de comparación de slugs en el controlador de temas, y quizás en otros lugares.

¿Debería continuar por este camino?

6 Me gusta