Answers:
我只是遇到了(并已解决)了同样的问题,并最终在这里找到答案。Nginx文档(http://nginx.org/en/docs/http/ngx_http_rewrite_module.html)并未明确指出〜*仅在if语句内起作用,但显然是这种情况。
为了在if语句之外为ngnix URL重写提供不区分大小写的正则表达式匹配,我必须使用Apache / Perl样式:
rewrite "(?i)foobar" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
请参阅http://perldoc.perl.org/perlretut.html(搜索不敏感)。似乎在特定捕获组之外的前缀(?i)使其适用于整个搜索字符串。注意:这似乎不适用于“ ^(?i)foobar”,因为似乎暗示了“ ^”。
但是,为了确保将来所做的任何重写,如果要使它们更容易维护和减少歧义,则可能需要执行以下操作:
location /foobar {
rewrite "(?i)" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
}
希望这可以帮助...
我发现可以使这项工作:
rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
您只需要这样做:
rewrite (?i)^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
这仅表示前缀(?i),否则匹配的所有内容都相同。