任何人都可以帮忙理解为什么有^
和$
?我知道^
的意思是“开始于”,$
的意思是“结束于”。我只是不知道我们为什么需要这个?您能否列出一些符合以下重写的URI并向我显示带有或不带有这两个符号的区别?
rewrite ^/users/(.*)$ /show?user=$1? last;
任何人都可以帮忙理解为什么有^
和$
?我知道^
的意思是“开始于”,$
的意思是“结束于”。我只是不知道我们为什么需要这个?您能否列出一些符合以下重写的URI并向我显示带有或不带有这两个符号的区别?
rewrite ^/users/(.*)$ /show?user=$1? last;
这些是为了确保在执行重写时整个URL是匹配的。
例如,没有^
,这些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
将匹配。
为什么^/users /(.*)$使我感到困惑的原因是我认为每个请求URI都以/开头,现在我明白^/users表示“请求URI以整个部分开始”/ users“”,另一个原因是我不知道为什么它仍然加$,我也认为在这种情况下没有必要,你解决了我多年来的困惑。谢谢。 – 2014-09-25 02:14:58
Duplicate http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean – Unihedron 2014-09-24 12:21:50
阅读关于链接问题的答案,特别是关于“锚点”部分。 – 2014-09-24 12:27:51
我确切地知道^和$是什么意思,我只是需要示例来澄清它们,这种联系对我来说并不清楚我的困惑。但还是谢谢。 – 2014-09-25 02:08:47