Юникод Linux / умлаутс в URL

У нас есть веб-сайт, где некоторые изображения называются с использованием Unicode, например wildkräuter2_big.jpg,

Проблема в том, что когда кто-то пытается получить к нему доступ, Apache 2.4 возвращает ошибку 404:

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

в логе 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 здесь - это, как говорит Deutsch - Unicode Tabelle.

Если выполнить GET с %C3%A4 - она ​​не будет работать. Если выполнить GET с a%CC%88 - это будет работать:

$ 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="

Я не уверен - откуда я a%CC%88 код - но это работает.

Итак, два "одинаковых" URL:

http://domain.tld/wp-content/uploads/2014/11/wildkra%CC%88uter2_big.jpg - это работает

http://domain.tld/wp-content/uploads/2014/11/wildkr%C3%A4uter2_big.jpg - это не работает.

И то и другое a%CC%88 а также %C3%A4 означает то же самое - буква ä.

Этот сайт был перенесен из другого агентства, и у нас нет информации о его настройке.

Наш текущий сервер работает под Ubuntu 14.04, с LANG=de (apache2 был перезапущен после LANG был изменен, но не весь сервер Linux) как locale а также ext4 файловая система:

# 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=

0 ответов

Другие вопросы по тегам