我们有一个网站,其中一些图片使用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
,则不起作用。如果使用 - 执行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
意思相同 -A信。
该网站是从其他机构迁移过来的,我们没有关于其设置的信息。
我们当前的服务器在 Ubuntu 14.04 下运行,文件系统为(LANG=de
更改后apache2
重新启动,但不是整个 Linux 服务器) :LANG
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=