简单修改Google XML Sitemaps with Multisite support插件使其支持同一博客生成多域名的网站地图

    不知广大博主是不是也有和我一样的经历,我喜欢在一个博客程序中绑定n各域名,于是也就想对每个域名都有一个网站地图。下面就将我好不容易实现的成功经验与大家分享。一般来说多域名站点无外乎有以下几种情况:

    1、实际为同一个博客,所有的内容完全一样,但是可以通过不同的域名访问(实际是通过PS WP Multi Domain这个插件实现),如我的Wordpress博客经验交流站就有wpblog.rr.nu;wpblog.vv.cc两个域名;Godaddy空间·域名·建站经验站有http://godaddy.rr.nuhttp://god.vv.cchttp://godady.cz.cc等桑域名;我的路吧-康哥的免费资源分享站就有http://5d68.rr.nuhttp://5d68.vv.cchttp://5d68.cz.cc等三个域名;免费寻找文件资源站就有http://findfile.rr.nuhttp://findfile.vv.cchttp://findfile.cz.cc等三个域名;智能PDA、手机信息和资源分享站就有http://wda.cz.cchttp://wda.vv.cchttp://wda.rr.nu等三个域名。所以本人一直想为每一个域名生成与之对应的网站地图以便搜索引擎收录。

    2、安装了Wordpress MU版本或3.0以上版本并开启了多域名功能,此时每一个域名对应不同的网站,当然也需要不同的网站地图。

    3、通过安装wp-hive插件(详见wp-hive插件,让您的一个WordPress变成多个博客(每个域名对应不同的博客)),实现一套博客程序建立多个不同的站点,这时也需要为不同的网站生成不同的网站地图。

    可是现有的网站地图生成插件根本不支持多站点地图生成,我好不容易找到了一个Google XML Sitemaps with Multisite support插件,据说可以支持多站点网站地图生成,却也不支持第1种多域名同时指向同一站点的情况(不过第2、3中情况我目前暂无此类需求,也没有测试),于是我下载了该插件并对其源文件研究了一番,发现可以适当修改实现此功能!

    即将该插件sitemap-core.php中function SitemapFilename()函数的语句作如下修改:

function SitemapFilename() {
        $siteurl = get_option( ‘siteurl’ );
        $domain = str_replace( array(‘http://’, ‘.’, ‘/’, ‘\’), array(”, ‘-’, ‘-’, ‘-’),

$siteurl );
        if((defined(‘WP_ALLOW_MULTISITE’) && !WP_ALLOW_MULTISITE) || (function_exists

(‘is_multisite’) && !is_multisite())) {
            return ‘sitemap-’.$domain.’.xml’;
        }
        return ‘sitemaps/’.$domain.’.xml’;
    }

    然后将sitemap-core.php文件上传替换,再进入博客后台,“设置”→“Xml-SiteMap”,你会惊奇地发现,在“你的 sitemap 文件的位置”栏目“自动检查”项里sitemap的文件名已经变成“sitemap-你的域名.xml”字样了(并且已自动将域名里的“.”转变成了“-”如我的wpblog.rr.nu博客的sitemap地址已经变成”sitemap-wpblog-rr-nu.xml”字样啦!如果此时我是用wpblog.vv.cc访问该博客,则该博客的sitemap地址就会自动变成”sitemap-wpblog-vv-cc.xml”字样啦!)!嘿嘿,是不是很简单啊?!希望您也能成功!(唯一遗憾的是此种方法不能“自定义位置”即由博主自定义sitemap文件的位置和文件名,不过这样已经很不错了,已经实现同一博客有多个域名指向时可以分别为每一个域名生成网站地图了!)

最后一定要记住千万不要对此插件进行升级啊,否则又得重新修改啦!

更多