Apache重写:%{HTTP_HOST}目录中的收藏夹图标

4urapxun  于 2022-11-16  发布在  Apache
关注(0)|答案(5)|浏览(103)

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

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.)我将只接受动态答案,我将只使用%{HTTP_HOST}变量,而不是静态域名,因为我不会在每次添加域名时手动编辑我的.htaccess文件。
3.)我可能最终会把一个.htaccess文件放在这些子目录中,虽然我现在没有,一个例外的favicon将非常感谢,虽然是没有必要的,我接受的答案。
4.)我很乐意做任何澄清。

11dmarpk

11dmarpk1#

使用此代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

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

mcdcgff02#

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

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

我把它塞到了一个虚拟主机声明中。你可以对你的每个虚拟主机都这样做,你所需要做的就是把第二部分指向正确的图标!这就解决了我所有的图标问题,甚至对于Firefox来说也是如此:)
(在FF 25、Safari 6.1、IE8和IE10上进行了测试)

9ceoxa92

9ceoxa923#

这个对我来说效果更好

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

qqrboqgw4#

要支持所有可能的浏览器和平台,除了favicon.ico文件外,还需要有android-chrome-192x192.pngapple-touch-icon.pngfavicon-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]

这将服务favicons包括苹果触摸,Android Chrome,Windows和其他favicons从/favicons/<DOMAIN_NAME>文件夹。

7hiiyaii

7hiiyaii5#

我在子域上的文件中遇到favicon问题

我很长一段时间都在为htaccess中只有一个子域的favicon重定向而挣扎。
我的例子是所有的域都从public/ directory中获取favicon。一个子域(我们称之为'subdomain_a')被配置为从另一个目录中获取它,并且它工作了。
在subdomain_a上打开文件时出现问题。文件视图(例如,pdf-viewer)中的favicon取自public/目录,而不是取自subdomain_a的配置。
下面是我的解决方案:

# Redirect for favicon
RewriteCond %{HTTP_HOST} ^www.subdomain_a.com
RewriteCond %{REQUEST_URI} ^/favicon.ico$
RewriteRule ^(.*)$ /path/to/favicon/for/new/domain/$1 [R=301,L]

相关问题