首页 文章

无法访问rawurlencoded UTF-8 URL

提问于
浏览
1

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

  • 3

    如果文件夹包含物理上的urlencoded名称,那么您需要确保这些名称本身是urlencoded在您的网址中 . 实际上,只要您从任何“不受控制的”,可能是url-unsafe元素创建URL,就必须对这些元素进行urlencode .

    因此,如果您有一个名为 %E8%96%AF%E6%A2%9D 的目录

    你可以在带有 %25E8%2596%25AF%25E6%25A2%259D 的URL中引用它

    漂亮,不是吗?

    另一种看待这种情况的方法是,当您使用现有的urlencoded URL时,服务器实际尝试解析的是/ items /汉堡饱/index.html

相关问题