URL 中的 Linux unicode/变音符号

URL 中的 Linux unicode/变音符号

我们有一个网站,其中一些图片使用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] “获取 /wp-content/uploads/2014/11/wildkr%C3%A4uter2_big.jpg HTTP/1.0”404 22295 "-" "curl/7.35.0"`

%C3%A4这里是A, 作为德语 - Unicode 表说。

如果使用GET-执行%C3%A4,则不起作用。如果使用 - 执行GETa%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意思相同 -A信。

该网站是从其他机构迁移过来的,我们没有关于其设置的信息。

我们当前的服务器在 Ubuntu 14.04 下运行,文件系统为(LANG=de更改后apache2重新启动,但不是整个 Linux 服务器) :LANGlocaleext4

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

相关内容