国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

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

2024-08-30 12:26:44
字體:
來源:轉載
供稿:網友

現在有這樣一個需求,網站根目錄下有靜態文件,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??梢杂胷ewrite修復,但是感覺不爽,在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之后需要再判斷一次文件存在。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德江县| 安达市| 清原| 来凤县| 平潭县| 上栗县| 文登市| 永和县| 新巴尔虎左旗| 化德县| 英吉沙县| 会理县| 宿迁市| 石屏县| 河北省| 新龙县| 酒泉市| 腾冲县| 巨鹿县| 光泽县| 荆州市| 鲁甸县| 长岭县| 黄山市| 南投市| 宁德市| 宁乡县| 辽源市| 保靖县| 衡南县| 恭城| 阜阳市| 利津县| 郁南县| 遂平县| 祁东县| 五河县| 乐平市| 时尚| 三河市| 武清区|