Nginx匹配的favicon相关的文件

Favicons变得越来越不守规矩。 为了迎合所有的浏览器/平台,我正在使用这个优秀的服务 。 我得到的是以下文件:

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 

推荐的path是web根目录,因为一些浏览器不支持自定义path。 我真的不想在我的网站上有这样的混乱。 所以,我正在寻找一个locationconfiguration,把他们都放在他们的专用目录,让客户认为他们在网站的根。

我已经看到这样的完全匹配规则:

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

但是,仅仅为这些文件准确匹配的地点并不是一个很好的解决scheme。 我还可以做些什么?

试试这个 – 对于包含子string图标的任何东西都是不区分大小写的正则expression式匹配,以及大多数其他expression式的testing。 我已经input了两个精确的匹配项,因为有可能在应用程序中使用这些URL。 如果在应用程序中使用“favicon”,将导致问题。

  # 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; } 

我运行了一个快速testing,这似乎工作。

Tero Kilkanen提供这个位置,这将是一个更好的比赛。 它仅匹配根目录并具有捕获组。

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

不过,我可能只是把所有的位置块匹配到一个文件,并包括它。 我假设精确的匹配是一个更快的触摸,而我的Nginxconfiguration文件最多可以达到500行。