2014-09-24 13 views
-2

任何人都可以帮忙理解为什么有^$?我知道^的意思是“开始于”,$的意思是“结束于”。我只是不知道我们为什么需要这个?您能否列出一些符合以下重写的URI并向我显示带有或不带有这两个符号的区别?

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

Duplicate http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean – Unihedron 2014-09-24 12:21:50

+0

阅读关于链接问题的答案,特别是关于“锚点”部分。 – 2014-09-24 12:27:51

+0

我确切地知道^和$是什么意思,我只是需要示例来澄清它们,这种联系对我来说并不清楚我的困惑。但还是谢谢。 – 2014-09-25 02:08:47

回答

0

这些是为了确保在执行重写时整个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将匹配。

+0

为什么^/users /(.*)$使我感到困惑的原因是我认为每个请求URI都以/开头,现在我明白^/users表示“请求URI以整个部分开始”/ users“”,另一个原因是我不知道为什么它仍然加$,我也认为在这种情况下没有必要,你解决了我多年来的困惑。谢谢。 – 2014-09-25 02:14:58