Linux unicode / umlauts in URL

1

Temos um site, onde algumas fotos são nomeadas usando unicode, por exemplo wildkräuter2_big.jpg .

O problema é - quando alguém tenta acessá-lo - o Apache 2.4 retorna um erro 404:

$ curl -r 0-99 http://domain.tld/wp-content/uploads/2014/11/wildkräuter2_big.jpg

no log do Apache:

40...168 - - [30/Jun/2016:13:27:36 +0000] "GET /wp-content/uploads/2014/11/wildkr%C3%A4uter2_big.jpg HTTP/1.0" 404 22295 "-" "curl/7.35.0"'

%C3%A4 here - é um ä , como Deutsch - Unicode Tabelle diz.

Se executar GET com %C3%A4 - não funcionará. Se executar GET com um a%CC%88 - ele irá funcionar :

$ curl -r 0-99 http://domain.tld/wp-content/uploads/2014/11/wildkra%CC%88uter2_big.jpg ����▒ExifII��Duckyd���http://ns.adobe.com/xap/1.0/<?xpacket begin="

Não tenho certeza - de onde recebi um código a%CC%88 - mas funciona.

Então, duas URLs "iguais":

link - isso funciona

link - isso não funciona.

Tanto a%CC%88 quanto %C3%A4 significam a mesma - uma letra ä .

Este site foi migrado de outra agência e não temos informações sobre sua configuração.

Nosso servidor atual funciona no Ubuntu 14.04, com LANG=de ( apache2 foi reiniciado depois que LANG foi alterado, mas não todo o servidor Linux) como locale e ext4 filesystem:

# su -s /bin/bash www-data

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de
LANGUAGE=
LC_CTYPE="de"
LC_NUMERIC=uk_UA.UTF-8
LC_TIME=uk_UA.UTF-8
LC_COLLATE="de"
LC_MONETARY=uk_UA.UTF-8
LC_MESSAGES="de"
LC_PAPER=uk_UA.UTF-8
LC_NAME=uk_UA.UTF-8
LC_ADDRESS=uk_UA.UTF-8
LC_TELEPHONE=uk_UA.UTF-8
LC_MEASUREMENT=uk_UA.UTF-8
LC_IDENTIFICATION=uk_UA.UTF-8
LC_ALL=
    
por setevoy 30.06.2016 / 15:52

0 respostas