Nginx 重写问题

Nginx 重写问题

我的目标是将的请求/foobar?key=123重定向到/download/foobar.html?key=123

我目前使用以下代码来实现这一点:

location /foobar {
  rewrite ^/foobar(.*)$ /download/foobar.html$1 permanent;
}

这可以解决问题,但是我们有一些旧代码也调用/FooBar?key=123/Foobar?key=123忽略了重写规则。

我怎样才能让这些也重写?可以使用:

location ~* ^/foobar {
  rewrite ^ /download/foobar.html$1 permanent;
}

但这个规定是不是有点太松了?

答案1

首先,location默认情况下区分大小写;location ~* ^/foobar$将修复此问题。

对于rewrite,它始终区分大小写,但您可以使表达式匹配两种形式:

rewrite ^/[Ff]oo[Bb]ar(.*)$ /download/foobar.html$1 permanent;

相关内容