favicon and multi site

时间:2012-01-14 作者:Steffy Kristiensen

如果您正在进行多站点安装,您会将favicon放在哪里,让浏览器自动识别它(并且不会用链接标记污损代码),因为根本没有真正的根目录?

提前感谢您在这方面的帮助

2 个回复
SO网友:TheDeadMedic

我会使用重写来映射/favicon.ico/icons/example.com.ico:

RewriteCond %{REQUEST_URI} ^/favicon\\.ico
RewriteCond %{SERVER_NAME} ^(www\\.)?([a-z0-9]+)
RewriteCond %{DOCUMENT_ROOT}/icons/%2.ico -f
RewriteRule . /icons/%2.ico [L]
注意#2行的regex取决于您的设置-每个网站是自己的域,还是主域的子域/子目录?

我还将在根目录中放置一个默认favicon,如果根目录中不存在favicon,则会拉取该favicon/icons 对于当前站点。

SO网友:brasofilo

另一种方法是在<head>.
唯一需要注意的是,以下内容不适用于子目录安装,仅适用于子域<不知怎的get_current_blog_id is仅返回ID1 在何时define(\'SUBDOMAIN_INSTALL\', false);.

<?php
/**
 * Plugin Name: Multisite Favicons
 * Description: Favicons should be stored in http://example.com/icons/domain_name.ico | If the site is subsite.example.com, the favicon should be subsite.ico
 **/

add_filter( \'wp_head\', \'multisite_favicons_wpse_38903\' );

function multisite_favicons_wpse_38903()
{ 
    // This function returns true if not Multisite
    if( is_main_site() ) 
        return;

    global $current_site;

    $details = get_blog_details( get_current_blog_id() );
    $blogname = 
        ( is_subdomain_install() ) 
        ? str_replace( \'.\' . $current_site->domain, \'\', $details->domain ) 
        : $details->path;

    printf(
        "<link rel=\'shortcut icon\' href=\'%s/icons/%s.ico\' type=\'image/x-icon\'/>\\n", 
        site_url(),
        $blogname
    );
}
有趣的博客帖子:Everything You Ever Wanted to Know about Favicons

结束