无法访问rawurlencoded UTF-8 URL

时间:2011-02-09 19:23:16

标签: apache url utf-8 urlencode url-encoding

我有一个共享主机帐户,我正在使用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 个答案:

答案 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