Correspondência Nginx para arquivos relacionados ao favicon

1

Os favicos tornaram-se cada vez mais indisciplinados. Para atender a todos os navegadores / plataformas, estou usando este excelente serviço . O que eu recebo são os seguintes arquivos:

android-chrome-192x192.png  favicon-16x16.png  mstile-150x150.png
android-chrome-512x512.png  favicon-32x32.png  safari-pinned-tab.svg
apple-touch-icon.png        favicon.ico
browserconfig.xml           manifest.json

O caminho recomendado para estes é o web root, pois alguns navegadores não honram os caminhos personalizados. Eu realmente não quero ter essa bagunça na minha raiz da web. Então, eu estou procurando por uma configuração de location para colocá-los todos em seu diretório dedicado, deixando os clientes pensarem que estão na raiz da web.

Eu vi regras correspondência exata como esta:

location = /favicon.ico {
  root /var/www/path/to/favicons;
}

Mas 10 locais de correspondência exata apenas para esses arquivos não são uma solução muito boa. O que mais posso fazer?

    
por Majid Fouladpour 16.10.2017 / 19:28

1 resposta

0

Tente isso - é uma correspondência de expressão regular insensível a maiúsculas e minúsculas para qualquer coisa que contenha o favicon de substring, além de testes para a maioria das outras expressões. Coloquei duas correspondências exatas porque há uma chance de os URLs serem usados em um aplicativo. Se "favicon" for usado no aplicativo, isso causará problemas.

 # Better option below for this line
 location ~* favicon|apple-touch-icon|android-chrome-|mstile-|safari-pinned-tab.svg|browserconfig.xml {
  root /var/www/path/to/favicons;
}
location = /browserconfig.xml {
  root /var/www/path/to/favicons;
}
location = /manifest.json {
  root /var/www/path/to/favicons;
}

Eu fiz um teste rápido e isso parece funcionar.

Tero Kilkanen oferece este local, o que seria uma melhor combinação. Corresponde apenas ao diretório raiz e possui um grupo sem captura.

location ^/(?:favicon|apple-touch-icon|android-chrome-|mstile-|safari‌​-pinned-tab.svg|brow‌​serconfig.xml)$

No entanto, eu provavelmente colocaria todas as correspondências de bloco de localização em um arquivo e as incluiria. Eu suponho que as correspondências exatas são um toque mais rápido, e meus arquivos de configuração do Nginx podem ter até 500 linhas de qualquer maneira.

    
por 16.10.2017 / 20:22

Tags