我有一个共享主机帐户,我正在使用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
这可能是一个什么样的问题?
非常感谢大家。
答案 0 :(得分:3)
如果文件夹包含物理上的urlencoded名称,那么您需要确保这些名称本身在您的网址中进行了urlencoded。实际上,只要您从任何“不受控制的”,可能是url-unsafe元素创建URL,就必须对这些元素进行urlencode。
因此,如果您有一个名为%E8%96%AF%E6%A2%9D
您可以在包含%25E8%2596%25AF%25E6%25A2%259D
漂亮,不是吗?
另一种看待这种情况的方法是,当您使用现有的urlencoded URL时,服务器实际尝试解析的是/ items /汉堡饱/ index.html