Problemas con caracteres acentuados no UTF en URL

Estamos migrando un foro en español y configurando enlaces permanentes para todos los temas.
Los títulos y URL existentes tienen caracteres acentuados en ISO 8859-15 codificados con porcentaje.

forum/showthread.php?96700-Galer%EDa-de-im%E1genes

Los estamos reescribiendo con /forum\\/showthread.php\\?(\\d*).*/thread/\\1 pero desafortunadamente obtenemos un error del servidor (con una página en blanco) antes de que se procese la normalización del enlace permanente.

Puedes ver esto, por ejemplo, en Try:

https://try.discourse.org/forum/showthread.php?96700-Galer�a-de-im�genes da una página en blanco y “bad request”. Rack::QueryParser::InvalidParameterError (invalid byte sequence in UTF-8)

https://try.discourse.org/forum/showthread.php?96700-Galeria-de-imagenes da la página normal de “not found”.

¿Tienes alguna sugerencia para solucionar esto sin demasiada configuración personalizada de nginx?

3 Me gusta

¿Quizás decodificar 96700-Galer%EDa-de-im%E1genes como ISO 8859-15 y codificarlo como UTF-8 antes de generar el permalink sea una solución? ¿O hay en realidad enlaces entrantes que utilizan los caracteres codificados en ISO 8859-15 en la URL?

Ojo, no estoy seguro de si es necesario usar la codificación de porcentaje para que los permalinks funcionen; no he mirado el código. Supongo que necesitarás experimentar un poco. No creo que haya una solución fácil para esto. Si encuentras una solución, por favor publícala aquí. Podría ser útil para otros.

1 me gusta

Sí, hay aproximadamente 150.000 enlaces externos sobre los que no tenemos control.