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

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 字符(不带编码)将文件保存在文件系统上?你有什么建议?

答案1

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

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

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

如果涉及 CMS,其实现必须正确支持 Unicode 文件名。不幸的是,CMS 对 Unicode 文件名的支持通常很差,您需要限制自己使用 ASCII 文件名才能正常工作。

答案2

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

相关内容