我有一个共享主机帐户,我使用Filezilla连接到服务器 .
在 public_html/items/
文件夹下,有许多子文件夹,它们的文件夹名称使用PHP rawurlencode
函数进行编码,如下所示:
apple
banana
orange
%E6%BC%A2%E5%A0%A1%E9%A3%BD
%E8%96%AF%E6%A2%9D
问题是当我访问名称中包含非ASCII字符(例如中文字符)的文件夹下的文件时出现404错误 .
这意味着我可以像这样访问URL:http://my-domain.com/items/apple/index.html
但不是:http://my-domain.com/items/%E6%BC%A2%E5%A0%A1%E9%A3%BD/index.html
这可能是一个什么样的问题?
非常感谢大家 .
1 回答
如果文件夹包含物理上的urlencoded名称,那么您需要确保这些名称本身是urlencoded在您的网址中 . 实际上,只要您从任何“不受控制的”,可能是url-unsafe元素创建URL,就必须对这些元素进行urlencode .
因此,如果您有一个名为
%E8%96%AF%E6%A2%9D
的目录你可以在带有
%25E8%2596%25AF%25E6%25A2%259D
的URL中引用它漂亮,不是吗?
另一种看待这种情况的方法是,当您使用现有的urlencoded URL时,服务器实际尝试解析的是/ items /汉堡饱/index.html