Recentemente, mudei para um novo servidor depois que o antigo morreu. Eu tive a instalação do WordPress, com o Apache2 e o Gentoo Linux. Quando me mudei, decidi usar nginx e Debian . Eu trouxe meu wordpress de volta ao trabalho e tudo ficaria bem se não fosse por um pouco ...
Problema
Imagens que contêm caracteres especiais nos nomes dos arquivos não são carregadas, obtenho 404 Not Found . Por exemplo, ao solicitar
http://my_site/wp-content/uploads/2013/05/Zajęcia-dla-dorosłych-z-bollywood-dance.jpg
wordpress responde
You tried going to http://my_site/wp-content/uploads/2013/05/Zaj%C4%99cia-dla-doros%C5%82ych-z-bollywood-dance.jpg, and it doesn't exist.
Eu joguei um pouco com o terminal e descobri que nomes de arquivos de imagem no servidor diferem um pouco daqueles solicitados pelo wordpress. Apesar de parecerem idênticas, as sequências de caracteres especiais são codificadas de maneira diferente. Por exemplo, quando copio o nome do arquivo Zajęcia-dla-dorosłych-z-bollywood-dance.jpg
do terminal, ele é codificado como Zajęcia-dla-dorosłych-z-bollywood-dance.jpg
. Por outro lado, o wordpress está procurando pelo arquivo Zajęcia-dla-dorosłych-z-bollywood-dance.jpg
que não existe, é claro.
Ambos os sistemas (o antigo Gentoo e o Debian atual) estão configurados para usar localidade baseada em UTF-8.
Como resolver?
Eu penso em três razões possíveis:
- O Debian armazena caracteres especiais em nomes de arquivos de maneira diferente do Gentoo
- meu novo mysql armazena caracteres especiais de forma diferente da antiga
- O nginx manipula caracteres especiais de maneira diferente do Apache
Alguma sugestão de como falsificar essas hipóteses e, finalmente, resolver o problema?