例如,“å”可以编码为/%E5和/%C3%A5(utf-8)。 所有我的文件名是UTF-8,所以ASCII变种返回一个404。我希望这两个变种工作。
我试着用不同的下面的configuration将不正确的URL改写成正确的编码。 我没有能够真正匹配的位置,所以没有得到任何地方。
rewrite ^/%E5$ /%C3%A permanent; rewrite ^/%25E5$ /%25C3%25A permanent; location = /%E5 { return 301 /%C3%A; }
我该如何匹配这些百分比编码位置?
在这里看到同样的问题,在Apache中 – 我build议使用外部程序来处理重写,因为在本地configuration中执行它很笨拙。
对于nginx,最好的方法是通过ngx_http_perl_moduleembedded一些Perl到你的configuration中 – 使用perl_set将variables设置为$r->uri的UTF-8版本,使用Encoding模块(见这里 ),然后重写(或者更好, try_files )。
编辑:
如果你想只是手动为特定的URL或特定的字符做这个,那么你只是在尝试中错过了一些东西:
尝试这样的事情
rewrite (*UTF8)^(.*)\xe5(.*)$ %1å%2;