在 Nginx 中根据请求 URL 文件扩展名有条件地提供 404 文件?

在 Nginx 中根据请求 URL 文件扩展名有条件地提供 404 文件?

我想知道是否可以根据请求 url 或请求的内容类型/mime 类型有条件地将特定文件作为 404 页面提供。

我猜是这样的:

if url_extention == (gif|jpg|png):
    /404.gif
else:
    /404.html

我不太熟悉 NGINX 404/url 重写。

目前,我有:

server
{

   listen 80;
   server_name static.example.com;
   access_log off;
   location / {
       root /warehouse/web/static/static.example.com;
       expires 3d;
       error_page 404 = /404.gif;
   }

   location /404.gif {
       root /warehouse/web/static/404;
   }
}

答案1

虽然这看起来不是一个很漂亮的配置,但是应该可以工作。

error_page 404 = @missing;

location @missing {
  if ($request_filename ~* [gif|jpg|png]$){
    rewrite ^ /404.gif;
  }
  if ($request_filename !~* [gif|jpg|png]$){
    rewrite ^ /404.html;
  }
}

相关内容