国产探花免费观看_亚洲丰满少妇自慰呻吟_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之后需要再判斷一次文件存在。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 名山县| 定安县| 定日县| 乐陵市| 武清区| 邵阳县| 翁源县| 樟树市| 府谷县| 恩平市| 绥芬河市| 六盘水市| 邯郸县| 长丰县| 乐平市| 富顺县| 广州市| 彭山县| 屏边| 天台县| 萝北县| 定南县| 偏关县| 论坛| 从化市| 徐州市| 和田县| 南京市| 罗甸县| 盘锦市| 屯昌县| 麻江县| 二手房| 七台河市| 凤城市| 图木舒克市| 盱眙县| 香格里拉县| 西林县| 昌吉市| 元氏县|