apache如何使用utf-8字符来提供文件?

从浏览器中,我试图访问文件https://example.com/86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwartał+2016+r. 我得到404错误。

当我检查文件系统文件存在与编码字符: 86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwarta%C5%82+2016+r.

当我打开Apache的服务器列表时,服务于https://example.com/86/86454cff-556a-4162-aa65-433158c133f4/Informacja+kwartalna++III+kwarta%25C5%2582+2016+r.

我怎样才能使它工作,所以它正确地与第一个地址送达? 或者我应该保存在文件系统使用utf-8字符没有编码的文件? 你会build议什么?

文件名不应该在文件系统中有任何URL转义。 URL编码仅在从客户端到服务器的HTTP请求期间相关,因为在该部分中只能使用ASCII字符。

当Apache或任何其他Web服务器收到请求时,它首先解码URL编码,然后查找文件名。

当然有几种编码Unicode字符的方法。 但是,文件名编码由系统库/文件系统完成,并且对于所有应用程序都是相同的。 因此,您只需要检查目录中的文件名与浏览器URL中的文件名相同即可。

如果涉及到CMS,其实施必须正确支持Unicode文件名。 不幸的是,对CMS中的Unicode文件名的支持通常是不好的,你需要限制自己的ASCII文件名才能正常工作。

我相信你正在寻找的是.htaccess和符号链接。 我不记得确切的指令是什么。