Apache Rewrite:%{HTTP_HOST}目录中的favicon

时间:2012-02-12 19:10:22

标签: apache mod-rewrite

我的软件支持多个域指向完全相同的目录,我使用共享主机。我需要从具有各自主机名的目录中加载每个域的favicon。这是一个视觉......

http://www.example1.com/favicon.ico
public_html/www.example1.com/favicon.ico

\

http://www.example2.com/favicon.ico
public_html/www.example2.com/favicon.ico

\

http://www.example3.com/favicon.ico 
public_html/www.example3.com/favicon.ico

我尝试了一些这样的改写,没有任何成功......

RewriteEngine on
RewriteRule ^favicon\.ico$ %{HTTP_HOST}/favicon\.ico

要记住的事情......

1。)我使用共享主机,所以请记住我需要的答案应该简短。

2。)我只接受DYNAMIC答案,我只会使用%{HTTP_HOST}变量而不是静态域名,因为每次添加域名时我都不会手动编辑.htaccess文件。

3。)我最终可能会在这些子目录中放入一个.htaccess文件,虽然我现在不会这样做,但是我会非常感谢favicon的例外,但我没有必要接受这个答案。

4。)我非常乐意作出任何澄清。

4 个答案:

答案 0 :(得分:2)

使用此代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteRule ^(favicon\.ico)$ %{HTTP_HOST}/$1 [L,NC]

答案 1 :(得分:0)

我一直在努力解决这个问题,但我最终使用以下规则修复了它:

<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule ^/favicon\.ico$ /sites/all/themes/mytheme/favicon.ico
</IfModule>

我将其填入虚拟主机声明中。您可以为每个虚拟主机执行此操作,您需要做的就是将第二部分指向正确的图标! 这解决了我所有的favicon问题,即使对于Firefox:)

(在FF25,Safari 6.1,IE8和IE10上测试)

答案 2 :(得分:0)

这个在我的案例中效果更好

RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L,NC]

答案 3 :(得分:0)

要支持所有可能的浏览器和平台,除了vlookup文件之外,还需要具有favicon.icoandroid-chrome-192x192.pngapple-touch-icon.png等文件... < / p>

这里是重写规则以支持所有规则:

favicon-32x32.png

这将提供RewriteRule ^(favicon.*\.(ico|png)|apple-touch-icon.*\.png|android-chrome.*\.png|mstile.*\.png|safari-pinned-tab.*\.svg)$ /favicons/%{HTTP_HOST}/$1 [L,NC] 文件夹中的图标,包括Apple Touch,Android Chrome,Windows和其他图标。