在Nginx配置中,两个符号(^和$)代表什么?

时间:2014-09-24 12:15:17

标签: nginx

有人可以帮助理解^$的原因吗?我知道^表示“以...开头”,$表示“以...结尾”。我只是不知道为什么我们需要那个?你能否列出一些与下面的重写相匹配的URI,并告诉我有或没有这两个符号的区别?

rewrite ^/users/(.*)$ /show?user=$1? last;

1 个答案:

答案 0 :(得分:2)

这些是为了确保在执行重写时匹配整个URL。

例如,如果没有^,这些网址将匹配:

/admin/users/foo
/whatever/users/bar

在这种情况下,$并非真正需要,因为*是贪婪的(.匹配任何内容,*匹配尽可能多。即使没有$,这也会使表达式与剩余输入匹配。在更受限制的情况下,例如:

rewrite ^/users/dan$ /show?user=dan last;

出于同样的原因,$很重要。没有它,这些URL将匹配:

/users/dan/delete
/users/dan/profile
/users/danny

但有了它,只有确切的网址/users/dan才匹配。