2014-09-24 20 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