一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - nginx try_files指令判斷文件是否存在實例

nginx try_files指令判斷文件是否存在實例

2019-10-26 17:09nginx教程網 Nginx

這篇文章主要介紹了nginx try_files指令判斷文件是否存在實例,本文用一個實際需求講解try_files指令的使用,并給出配置示例,需要的朋友可以參考下

現在有這樣一個需求,網站根目錄下有靜態文件,static目錄下也有靜態文件,static目錄下的靜態文件是程序批量生成的,我想讓nginx在地址不變的前提下優先使用static目錄里面的文件,如果不存在再使用根目錄下的靜態文件,比如訪問首頁http://example.com/index.html則nginx返回/static/index.html,如果不存在返回/index.html。

經過一番研究可以用if指令實現,關鍵配置如下,這條配置需要放到靠前的位置

復制代碼代碼如下:

if (-e $document_root/static$request_uri) {
 rewrite ^/(.*)$ /static/$1 break;
 break;
}


這里有兩點需要注意:

 

nginx變量默認應該開頭有反斜線而結尾沒有。

nginx字符串和變量可以直接連接,如果可能有歧義可以花括號括起變量名稱,整個字符串必須加雙引號

 

復制代碼代碼如下:
"${document_root}/static${request_uri}"

 

是用這種方式有一個缺點,index指令指定的文件不會起作用,比如訪問http://example.com/就會404,必須顯示的指定文件名才行http://example.com/index.html。可以用rewrite修復,但是感覺不爽,在nginx陷阱頁面突然發現一個針對性的指令try_files

復制代碼代碼如下:

set $static "/static";
try_files $static$uri $static$uri/index.html /index.php;

 

參考頁面

http://wiki.nginx.org/Pitfalls

后來發現$uri變量本身會自動添加index.html后綴,經過實驗這樣寫也是可以的

復制代碼代碼如下:


if (-e "${document_root}/static${uri}") {
 rewrite ^/(.*)$ /static/$uri break;
}

 

if (-e $request_filename) {
 break;
}


因為最后不存在的文件都寫到index.php去了所以上面rewrite之后需要再判斷一次文件存在。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91tv在线观看| 成人影院在线观看 | 国产精品久久久久久五月尺 | 亚洲 欧美 国产 综合首页 | 四虎影视网站 | 国产视频自拍一区 | 男人午夜免费视频 | yy6080午夜国产免费福利 | 色999| 欧美亚洲国产成人不卡 | 成人在线播放视频 | 美女扒开腿让男生桶爽漫画 | 成人欧美一区在线视频在线观看 | 亚洲一卡2卡三卡4卡5卡组 | 高清一区二区 | 91精品国产品国语在线不卡 | 黄网国产| 国产大胆歌舞团网站 | 欧美综合另类 | 四川一级毛片 | 欧美日韩亚洲国内综合网香蕉 | 鬼惨笑小说| 99精品免费在线 | 俄罗斯大白屁股 | 日本高清二三四本2021 | 乌克兰肥熟 | 国产91在线精品 | 睡男神的这件小事小说在线阅读 | 麻豆天美精东果冻传媒在线 | 美女扒开腿让男人桶爽动态图片 | 我半夜摸妺妺的奶C了她 | 美女被躁了在线观看视频 | 青青在线视频免费 | 国产成人黄网在线免 | 日本xxxx在线视频免费 | 久久电影精品久久99久久 | 免费看男人狂躁女人 | 国产精品欧美亚洲韩国日本99 | 亚洲娇小性hd | 日本深夜视频 | 帅老头恋帅老头同性tv |