天天看點

07-Location之正則比對

大網站專門有自己的圖檔伺服器,起碼也得單獨放一個目錄裡面。

淘寶網有些圖檔開啟了防盜鍊(即使是小圖檔,也不讓你下載下傳,真小氣)。163新聞可以下載下傳。

07-Location之正則比對

用正則比對uri中的image,就是說你的uri中到底有無image。

07-Location之正則比對

為什麼是404呢?

07-Location之正則比對

因為你通路的是index.html,它的根目錄root是/usr/local/nginx/html/。/usr/local/nginx/html/下面哪來的image目錄和logo.jpeg啊。

07-Location之正則比對
07-Location之正則比對
07-Location之正則比對

由于image目錄是和index.html都在html目錄下,是以圖檔得以顯示出來。

07-Location之正則比對

 動靜分離:把靜态的js、css和圖檔分離出去嗎?分到别的目錄甚至的别的伺服器。你會說沒有任何難度啊。image的位址的uri左邊不就是一個斜線嗎?

通路圖檔位址的時候,找到了這張圖檔,找到了就說明它來到了html目錄下,來到了html目錄下就證明location段生效了。這個location段為什麼生效了?因為這個image位址的uri左邊不就是一個斜線嗎?那不就比對上了嗎?但是它比對的非常的短,隻比對了一條斜線。

07-Location之正則比對

單純隻讨論正則。你要是遇上image單獨拿出來說話。單獨讨論正則。

07-Location之正則比對

普通的一條斜線可以比對uri:http://192.168.118.128/image/logo.jpeg,正則也可以比對uri:http://192.168.118.128/image/logo.jpeg,這個時候它倆誰發生作用?精準和普通比對沖突的時候,是精準比對先發揮作用。

 現在,又多了一個正則和普通的做比對,也沖突了,此時誰發揮作用?

07-Location之正則比對
07-Location之正則比對

如果你用~号指定了正則,它就會再用正則去比對,前面已經比對過了後面有正規表達式還拿正規表達式去比對幹嘛?這就說明正規表達式要是能比對成功肯定要覆寫前面的成果。否則如果你不覆寫你還費這個勁幹嘛。普通就是不用正則也不用精準的那個比對,它比對最長的而且是記住那個結果,然後是正規表達式開始檢查。按照正規表達式的順序開始檢查,一旦要是檢查到了哪個正規表達式能比對立即就結束了,而且這個選項就要被用上。

按理說這個正規表達式要發揮作用啊

07-Location之正則比對
07-Location之正則比對
07-Location之正則比對

正則是從開頭到結尾啊還是說半道上有個image就行啊。雖然說是404,但是你是從哪個目錄上去找圖檔的這個得搞清楚。看看錯誤日志

07-Location之正則比對

正則已經比對成功了,别以為是404就是一樣的,其實是錯誤的情況有很多種。已經到了/var/www/image/目錄下去找了,隻不過多了image而已。

修改:

07-Location之正則比對

成功了!

07-Location之正則比對

正規表達式把上一個location的功能給覆寫了。其實第一個location尋找了也發揮作用了。但是單對于image而言又做了特殊處理。對于image這一塊,我有我自己的正則文法,比對到/var/www/(不是/var/www/image/)目錄下,是以發揮了作用。

07-Location之正則比對
07-Location之正則比對
07-Location之正則比對
07-Location之正則比對
07-Location之正則比對

注意要使比對生效,必須得/var/www/html/foo/目錄存在并且目錄下有索引檔案才能生效啊,不然比對完成一樣會報404錯誤。不是可以比對就一定會有效果。

07-Location之正則比對
07-Location之正則比對

轉載于:https://www.cnblogs.com/ZHONGZHENHUA/p/6547906.html