Linux中的unicode / umlauts的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说。

如果用%C3%A4执行GET – 它将不起作用。 如果a%CC%88执行GET – 它将工作:

$ 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 (在更改LANG之后重新启动apache2 ,但不是整个Linux服务器)作为localeext4文件系统:

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