Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Regex Apache将ascii编码为utf8_Regex_Apache_Mod Rewrite_Apache Config - Fatal编程技术网

Regex Apache将ascii编码为utf8

Regex Apache将ascii编码为utf8,regex,apache,mod-rewrite,apache-config,Regex,Apache,Mod Rewrite,Apache Config,我的服务器上有静态子文件夹。 我只想让Apache以正确的方式转发它们。 使用普通英文子文件夹,我没有问题。example.com/asd->/srv/fdr/asd。 当请求包含非ascii字母时,它会将其转换为如下Büc->B%C3%BCc,而我的文件夹名为/srv/fdr/Büc(在utf8中),Apache会将其转发到/srv/fdr/B%C3%BCc 你知道如何更改URL路径编码吗 谢谢您可以使用RewriteMap和int(内部函数)创建一个unescape映射(尽管它被称为“esc

我的服务器上有静态子文件夹。 我只想让Apache以正确的方式转发它们。 使用普通英文子文件夹,我没有问题。example.com/asd->/srv/fdr/asd。 当请求包含非ascii字母时,它会将其转换为如下Büc->B%C3%BCc,而我的文件夹名为/srv/fdr/Büc(在utf8中),Apache会将其转发到/srv/fdr/B%C3%BCc

你知道如何更改URL路径编码吗


谢谢

您可以使用
RewriteMap
和int(内部函数)创建一个unescape映射(尽管它被称为“escape”)。由于这是一个重写映射,它需要位于服务器配置(httpd.conf)或虚拟主机配置中:

RewriteMap unescape int:escape
现在您可以在反向引用中使用${unescape:}。因此,如果您正在匹配一个包含转义字符的URI,那么您可以将反向引用包装在其中以取消转义。例如:

# Need this to avoid rewrite-looping
RewriteCond %{REQUEST_URI} !^/srv/fdr
RewriteRule ^(.+)$ /srv/fdr/${unescape:$1} [L,NE]
这将获取URI
/B%C3%BCc
并将其重写为
/srv/fdr/Büc

还要注意,如果将重写规则放入服务器或virtualhost配置中,则需要在正则表达式匹配中的(.+)之前添加一个/