Caracteres especiais em nomes de arquivos + nginx + php = 404

2

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?

    
por Mikołaj Pastuszko 12.10.2013 / 00:23

1 resposta

1

Ok, resolvi o problema corrigindo os nomes dos arquivos com um script . Eu acho que a codificação de caracteres especiais foi quebrada em algum momento quando eu estava copiando os arquivos entre os sistemas (Gentoo = > Mac OS X = > Debian). Sinta-se à vontade para usar e editar meu script, você tem um problema parecido.

    
por 12.10.2013 / 18:02