Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 无法访问的rawUrl编码的UTF-8 URL_Apache_Url_Utf 8_Urlencode_Url Encoding - Fatal编程技术网

Apache 无法访问的rawUrl编码的UTF-8 URL

Apache 无法访问的rawUrl编码的UTF-8 URL,apache,url,utf-8,urlencode,url-encoding,Apache,Url,Utf 8,Urlencode,Url Encoding,我有一个共享主机帐户,我正在使用Filezilla连接到服务器 在public\u html/items/文件夹下,有许多子文件夹,它们的文件夹名称使用PHPrawurlencode函数编码,如下所示: apple banana orange %E6%BC%A2%E5%A0%A1%E9%A3%BD %E8%96%AF%E6%A2%9D 问题是,当我访问名称包含非ASCII字符(例如,中文字符)的文件夹下的文件时,会出现404错误 这意味着我可以访问如下URL: 但不是: 这可能是什么样的问

我有一个共享主机帐户,我正在使用Filezilla连接到服务器

public\u 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:

但不是:

这可能是什么样的问题


非常感谢大家。

如果文件夹包含物理URL编码的名称,那么您需要确保这些名称本身在URL中是URL编码的。事实上,无论何时,只要您从任何“不受控制”、可能不安全的URL元素创建URL,您都必须对这些元素进行URL编码

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

您可以使用
%25E8%2596%25AF%25E6%25A2%259D

很漂亮,不是吗


另一种方式是,当您使用现有的URL编码URL时,服务器实际上试图解析的是/items/漢堡飽/html

我想您必须对字符串进行两次URL编码。此时,将对字符进行解码,并搜索解码结果for@Pekka是的,我想你是对的。非常感谢你的帮助。