我尝试从浏览器访问文件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 和符号链接。我不记得确切的指令是什么。