一、指令說明
try_files指令
語法:try_files file ... uri 或 try_files file ... = code
默認值:無
作用域:server location
其作用是按順序檢查文件是否存在,返回第一個找到的文件或文件夾(結尾加斜線表示為文件夾),如果所有的文件或文件夾都找不到,會進行一個內部重定向到最后一個參數。
需要注意的是,只有最后一個參數可以引起一個內部重定向,之前的參數只設置內部URI的指向。最后一個參數是回退URI且必須存在,否則會出現內部500錯誤。命名的location也可以使用在最后一個參數中。與rewrite指令不同,如果回退URI不是命名的location那么$args不會自動保留,如果你想保留$args,則必須明確聲明。
try_files $uri $uri/ /index.php?q=$uri&$args;
二、示例
所訪問fn目錄下如果文件不存在則跳轉到指定域名
[root@linux-node2 /etc/nginx/conf.d]# cat fn.conf server { listen 80; server_name 192.168.5.72; location /fn { alias /usr/share/nginx/html/fn/; index index.html index.php; try_files $uri $uri/ @mudidi; } location @mudidi{ proxy_pass http://www.baidu.com; } } [root@linux-node2 ~]# ls /usr/share/nginx/html/fn/ a.txt index index.html long.html
跳轉到指定文件,404.html文件需要存在:
location /fn { alias /usr/share/nginx/html/fn; index index.html index.php; try_files $uri $uri/ 404.html; }
如果文件或目錄不存在,則跳轉到指定的502錯誤:
location /fn { alias /usr/share/nginx/html/fn; index index.html index.php; try_files $uri $uri/ =502; }