复杂的htaccess规则对于现代的favicon重写有困难

时间:2016-05-08 15:57:36

标签: apache .htaccess mod-rewrite

我没有将所有新的favicon格式放在我网站的根目录中,而是将它们放在子文件夹中。为了符合标准,因为某些浏览器/设备版本不使用html元标记内指示的路径,而是尝试从网站根目录获取文件,我正在创建重写规则以将所有这些文件重定向到实际位置 - 但只有这些文件。

到目前为止,我想出的是:

RewriteEngine On
RewriteRule ^/((apple\-touch\-icon|android\-chrome|favicon|mstile)-([0-9]+)x([0-9]+).png|manifest\.json|browserconfig\.xml|favicon\.ico|(apple\-touch\-icon\-precomposed|apple\-touch\-icon).png|safari-pinned-tab.svg)$ /favicon/$1 [L]

这应匹配以下所有文件:

favicons

在测试规则at this site时,规则不匹配(参见图片):

rule not matched

我想将此规则保留在同一行,并且由于大小标准的变化,我希望保持这种动态(也就是说,而不是指定每个单独的文件,使用我试图做的掩码)。我怀疑我的正则表达式已经关闭了。

请协助或提供纠正的正则表达式模式的解决方案,以达到我想要实现的目标。

1 个答案:

答案 0 :(得分:0)

以下是使用重写映射现代favicons的相当强大的模式。

RewriteRule的正则表达式

  

^(browserconfig.xml |的manifest.json |狩猎钉扎-tab.svg |(机器人铬|图标| mstile) - [0-9] + X [0-9] + PNG |。苹果触摸-icon(-precompressed.png | - [0-9] + X [0-9] + PNG |。.PNG)|的manifest.json)$

使用示例

此示例假定放置favicon(apple-icon *等)的重写目标是文件夹名favicons

RewriteRule ^(browserconfig.xml|manifest.json|safari-pinned-tab.svg|(android-chrome|favicon|mstile)-[0-9]+x[0-9]+.png|apple-touch-icon(-precompressed.png|-[0-9]+x[0-9]+.png|.png)|manifest.json)$ /favicon/$1 [L]