Dan*_*iel 3 rewrite nginx utf-8
例如,“å”可以编码为 /%E5 和 /%C3%A5 (utf-8)。我所有的文件名都是 UTF-8,所以 ASCII 变体返回 404。我希望这两个变体都能工作。
我尝试使用以下配置的变体将不正确的 URL 重写为正确的编码。我无法真正匹配这些位置,所以没有到达任何地方。
rewrite ^/%E5$ /%C3%A permanent;
rewrite ^/%25E5$ /%25C3%25A permanent;
location = /%E5 { return 301 /%C3%A; }
Run Code Online (Sandbox Code Playgroud)
我应该如何匹配这些百分比编码的位置?
有关Apache 中的相同问题,请参见此处- 在那里,我建议使用外部程序来处理重写,因为在本机配置中执行此操作很笨拙。
对于nginx的,最好的办法可能会嵌入一些Perl配置中的通过ngx_http_perl_module
-使用perl_set
设置为一个UTF-8指明分数版本的变量$r->uri
,使用Encoding
模块(见这里),并重写(或可能更好,try_files
)到.
编辑:
如果您只想针对特定 URL 或特定字符手动执行此操作,那么您在尝试中会遗漏以下几点:
尝试这样的事情..
rewrite (*UTF8)^(.*)\xe5(.*)$ %1å%2;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3010 次 |
最近记录: |