Apache serve arquivos com codificação de URL diferente

1

Eu recebi um erro quando tento carregar uma imagem de arquivo no meu servidor de teste, parece que é sobre codificação. Quando eu acesso ao seguinte URL:

http://example.com/sites/default/files/2016-12/Articulaci%C3%B3n.jpg

O Apache lança um erro 404 (Não encontrado), o arquivo existe e tem o nome "Articulación.jpg"

Mas, se eu tentar carregar o arquivo de imagem com o seguinte URL, funciona:

http://example.com/sites/default/files/2016-12/Articulacio%CC%81n.jpg

No meu servidor local (desenvolvimento), ambas as URLs funcionam, posso ver a imagem como esperado.

Meu servidor de desenvolvimento é uma instalação do MAMP:

  • MacOS Sierra 10.12.3
  • Drupal 8.2.1
  • PHP 5.5.14
  • Apache 2.2.26 (Unix)
  • PostgreSQL 9.4.4

Meu servidor de teste é um servidor Centos:

  • Centos 7
  • Drupal 8.2.1
  • PHP 5.6.26
  • Apache 2.4.6 (CentOS)
  • PostgreSQL 9.2.15

Eu acho que esse é um comportamento de fallback de mapeamento ou codificação de url do apache, talvez uma configuração de módulo, extensão ou servidor esteja caindo / faltando no meu servidor de teste.

    
por Sergio Meneses 21.03.2017 / 19:46

1 resposta

0

Os URLs têm duas codificações UTF-8 diferentes para o caractere ó . O primeiro é %CC%81 e o segundo é %C3%B3 . Você precisa descobrir por que o URL é diferente em cada servidor e verifique se eles são iguais.

Assim, algumas configurações em seu servidor de desenvolvimento fazem com que ele codifique o URL de maneira diferente. Isso pode estar relacionado à diferença de versão do PHP ou ao conjunto de caracteres / codificação usados no PHP.

Outra possibilidade é que o Mac OS seja menos rigoroso com os nomes dos arquivos e possa corresponder ao mesmo arquivo com diferentes codificações.

    
por 21.03.2017 / 20:26