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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 孝昌县| 小金县| 德格县| 芜湖市| 洮南市| 乌什县| 策勒县| 左贡县| 黔江区| 桓仁| 鹰潭市| 和硕县| 庐江县| 独山县| 顺平县| 敦化市| 湘乡市| 堆龙德庆县| 固阳县| 辽宁省| 通道| 汝阳县| 龙海市| 睢宁县| 大化| 新宁县| 屯留县| 民权县| 含山县| 雷波县| 徐水县| 武夷山市| 加查县| 友谊县| 福清市| 东阳市| 卢龙县| 丹寨县| 恭城| 连江县|