Nginx重写问题

我的目标是/foobar?key=123请求应该redirect到/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; } 

但这是不是有点松散的规则?

首先, location默认情况下是区分大小写的; location ~* ^/foobar$将解决这个问题。

对于rewrite ,它总是区分大小写,但是你可以使你的expression式匹配两种forms:

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