大網站專門有自己的圖檔伺服器,起碼也得單獨放一個目錄裡面。
淘寶網有些圖檔開啟了防盜鍊(即使是小圖檔,也不讓你下載下傳,真小氣)。163新聞可以下載下傳。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYDM4AjN5IDM30yMxcTO0kDM0EDNxMDM3EDMy0SOzETO4ATMvw1MwcTMwIzLclzMxkDOwEzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
用正則比對uri中的image,就是說你的uri中到底有無image。
為什麼是404呢?
因為你通路的是index.html,它的根目錄root是/usr/local/nginx/html/。/usr/local/nginx/html/下面哪來的image目錄和logo.jpeg啊。
由于image目錄是和index.html都在html目錄下,是以圖檔得以顯示出來。
動靜分離:把靜态的js、css和圖檔分離出去嗎?分到别的目錄甚至的别的伺服器。你會說沒有任何難度啊。image的位址的uri左邊不就是一個斜線嗎?
通路圖檔位址的時候,找到了這張圖檔,找到了就說明它來到了html目錄下,來到了html目錄下就證明location段生效了。這個location段為什麼生效了?因為這個image位址的uri左邊不就是一個斜線嗎?那不就比對上了嗎?但是它比對的非常的短,隻比對了一條斜線。
單純隻讨論正則。你要是遇上image單獨拿出來說話。單獨讨論正則。
普通的一條斜線可以比對uri:http://192.168.118.128/image/logo.jpeg,正則也可以比對uri:http://192.168.118.128/image/logo.jpeg,這個時候它倆誰發生作用?精準和普通比對沖突的時候,是精準比對先發揮作用。
現在,又多了一個正則和普通的做比對,也沖突了,此時誰發揮作用?
如果你用~号指定了正則,它就會再用正則去比對,前面已經比對過了後面有正規表達式還拿正規表達式去比對幹嘛?這就說明正規表達式要是能比對成功肯定要覆寫前面的成果。否則如果你不覆寫你還費這個勁幹嘛。普通就是不用正則也不用精準的那個比對,它比對最長的而且是記住那個結果,然後是正規表達式開始檢查。按照正規表達式的順序開始檢查,一旦要是檢查到了哪個正規表達式能比對立即就結束了,而且這個選項就要被用上。
按理說這個正規表達式要發揮作用啊
正則是從開頭到結尾啊還是說半道上有個image就行啊。雖然說是404,但是你是從哪個目錄上去找圖檔的這個得搞清楚。看看錯誤日志
正則已經比對成功了,别以為是404就是一樣的,其實是錯誤的情況有很多種。已經到了/var/www/image/目錄下去找了,隻不過多了image而已。
修改:
成功了!
正規表達式把上一個location的功能給覆寫了。其實第一個location尋找了也發揮作用了。但是單對于image而言又做了特殊處理。對于image這一塊,我有我自己的正則文法,比對到/var/www/(不是/var/www/image/)目錄下,是以發揮了作用。
注意要使比對生效,必須得/var/www/html/foo/目錄存在并且目錄下有索引檔案才能生效啊,不然比對完成一樣會報404錯誤。不是可以比對就一定會有效果。
轉載于:https://www.cnblogs.com/ZHONGZHENHUA/p/6547906.html