有人可以帮助理解^
和$
的原因吗?我知道^
表示“以...开头”,$
表示“以...结尾”。我只是不知道为什么我们需要那个?你能否列出一些与下面的重写相匹配的URI,并告诉我有或没有这两个符号的区别?
rewrite ^/users/(.*)$ /show?user=$1? last;
答案 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
才匹配。