Condicionalmente serve o arquivo 404 com base na extensão do arquivo url request no Nginx?

1

Gostaria de saber se posso exibir condicionalmente um arquivo específico como uma página 404 com base no URL de solicitação ou com o tipo de conteúdo / tipo mime solicitado.

Eu acho que algo ao longo das linhas:

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

Eu não estou muito familiarizado com as reescritas do NGINX 404 / url.

No momento, tenho:

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;
   }
}
    
por Louis 26.08.2010 / 00:41

1 resposta

1

Não é exatamente uma configuração bonita, mas deve funcionar.

error_page 404 = @missing;

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