Nginx使用try_files检查文件是否存并配置返回重定向页面或状态码

时间:2024-10-24 14:24:44

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一 个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内 部500错误。

语法格式:

  • try_files file ... uri;
  • try_files file ... =code;

可以放置的位置:server, location

用法示例:

修改配置文件,如果访问的资源不存在,就定向到/try/tryfile.html页面

[root@localhost conf.d]# vi uhn.conf 
[root@localhost conf.d]# cat uhn.conf 
server {
   listen 80;
   server_name www.uhn.cn;

   error_page 500 502 503 504  /error.html;
   location = /error.html {
   root /data/nginx/html/uhn;
   }
   
   location / {
   root /data/nginx/html/uhn;
   try_files $uri $uri.html $uri/index.html /try/tryfile.html;
#   auth_basic "login password";
#   auth_basic_user_file /software/nginx/conf/.htpasswd;
   }
}

创建/try/tryfile.html页面


[root@localhost conf.d]# mkdir -p /data/nginx/html/uhn/try

[root@localhost conf.d]# echo "tryfile page" > /data/nginx/html/uhn/try/tryfile.html

访问一个不存在的资源页面,确实显示了我们定义的tryfile.html页面内容

Nginx使用try_files检查文件是否存并配置返回重定向页面或状态码_nginx

还可以定义错误返回码,修改配置文件

[root@localhost conf.d]# cat uhn.conf
server {
   listen 80;
   server_name www.uhn.cn;

   error_page 500 502 503 504  /error.html;
   location = /error.html {
   root /data/nginx/html/uhn;
   }
   
   location / {
   root /data/nginx/html/uhn;
   try_files $uri $uri.html $uri/index.html =911;

使用浏览器访问测试,可以看到返回错误码911  (linux 下使用curl -I 也可以查看到 )

Nginx使用try_files检查文件是否存并配置返回重定向页面或状态码_nginx_02