如果你升级到了WordPress 3.0,恰巧又启用了多站点(Multisite)模式,不幸的事情出现了:Google XML Sitemaps 目前还不支持WordPress 3.0的多站点(Multisite)模式。
如果你在启用了多站点模式的WordPress安装中激活该插件,会收到如下图所示的错误提示:
好在作者Arne Brachhold并不是不打算开发适用于多站点模式的版本,而是暂时没有时间。说不定哪天就放出更新来支持多站点模式了。问题是,现在怎么办?
我就碰到了这样的事情,好在从国外某个网站上看到了临时的解决办法,经过测试,该方法也适用于以子目录(Sub-Directory)形式安装的多站点,当然,根据原文作者的叙述我们知道,它是适用于以子域名(Sub-Domain)方式启用的多站点的。
实际上,这个错误提示是我们在更新Google XML Sitemaps插件到最新版3.2.4版的时候才会有的。如果你使用的还是旧版本,是不会有这个提示的,而且也能正常工作,只是没法让它对你的网络上的每个站点都适用。
所以,临时解决办法如下。
1、修改插件源程序
修改文件 wp-content/plugins/google-sitemap-generator/sitemap.php ,注释掉其中的53到58行,该部分内容如下:
//Check for 3.0 multisite, NOT supported yet!
// if((defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE) || (function_exists('is_multisite') && is_multisite())) {
// if(function_exists('is_super_admin') && is_super_admin()) {
// add_action('admin_notices', array('GoogleSitemapGeneratorLoader', 'AddMultisiteWarning'));
// }
//
// return;
// }
当然你也可以直接删除这几行。这几行就是更新到3.2.4版本时多出来的判断是否是多站点安装的,如果判断是多站点安装就直接禁用该插件。
2、写好你的地址重写规则(ModRewrite Rules)
在你的WordPress安装的根目录,你应该可以找到这个 .htaccess 文件,在文件中部(一定要在WordPress规则或者其它SEO、缓存等插件(如 WP Super Cache)创建的规则之前,即,在任何 # Begin ... WordPress ... 之前。如 # BEGIN WPSuperCache 之前。)增加几行规则。有关重写规则请参考“Mod RewriteRule 基本表达规则”。
如果是子域名(Sub-Domain)安装,则增加:
RewriteRule ^sitemap.xml sitemap-%{SERVER_NAME}.xml [L]
RewriteRule ^sitemap.xml.gz sitemap-%{SERVER_NAME}.xml.gz [L]
如果是子目录(Sub-Directory)安装,则增加:
RewriteRule ^([_0-9a-zA-Z-]+)/sitemap\.xml$ sitemap-$1.xml [L]
RewriteRule ^([_0-9a-zA-Z-]+)/sitemap\.xml\.gz$ sitemap-$1.xml.gz [L]
等下在后面会用到这个。它的作用是将对sitemap.xml和sitemap.xml.gz两个文件的访问分别重定向到sitemap-子域名.xml和sitemap-子域名.xml.gz两个文件。具体见下面的例子。
3、启用该插件并进行设置
现在可以在每个站点中分别启用该插件,注意,不要使用“网络激活(Network Activate)”!!!
然后进入插件选项(Settings——>XML-Sitemap)页面进行必要设置。翻到下面找到“Location of your sitemap file(Sitemap存储位置)”,选择“Custom location(自定义位置)”。
在这里修改自定义位置 sitemap.xml 为 sitemap-你的博客地址.xml,并保存设置。例如,如果博客地址是 blog1.cnzhx.net,就修改为 sitemap-blog1.cnzhx.net.xml。如果是子目录安装,则地址是 cnzhx.net/blog1/,就修改为 sitemap-blog1.xml。
现在看看你的WordPress安装根目录里是否有sitemap.xml和sitemap.xml.gz文件,如果有,将它们全部删除。
到该页面的最上头,单击“rebuild the sitemap manually(手动重建Sitemap)”,并检查WordPress根目录是否创建了sitemap-你的博客地址.xml 和/或 sitemap-你的博客地址.xml.gz 文件。
4、测试以确认可用
需要测试两样东西。首先在你的浏览器中输入 http://你的博客地址/sitemap.xml 并打开,然后输入 http://你的博客地址/sitemap-你的博客地址.xml 并打开(请注意子目录安装和子域名安装的区别,见第3步中的“自定义sitemap的存储位置”!!!)。如果你前面第2步的重写规则设置正确,这两个地址应该都能正常工作。
例如,我的是子目录安装的多站点功能,在我的网站上输入 http://cnzhx.net/support/sitemap.xml 或者 http://cnzhx.net/sitemap-support.xml 应该都能打开站点“支持中心”(http://cnzhx.net/support/)的sitemap。
5、针对你的网络中的每个站点重复上面第3步的设置
你需要在每个要创建sitemap的子站点中重复第3步的操作,因为前面说过,我们不能“网络激活(Network Activate)”该插件,只能在每个站点中分别激活,并设置相应的选项(Settings——>XML-Sitemap)。
6、注意事项
如果该方法对你适用,那很好!但是如果不能用,你可以给我留言,但是请不要向插件原作者抱怨或者写信、留言等。等到原作者更新了适用于多站点模式的插件版本,问题就解决了。
另外,如果你之后对插件进行升级,你可能会丢失在第1步中的修改,请注意!!!
转载请注明:来自不存在的空间, 作者lonelicloud。


这样设置好的SITEMAP有没有啥不好的地方嘿?新手 呵呵 求解 tks
目前我还没发现什么问题,不过预计的问题倒是有一个。
因为主站点的sitemap路径是 yourdomain.com/sitemap.xml,而其它站点的sitemap路径是 yourdomain.com/otherblog/sitemap.xml。如果,只是如果,该插件回头支持多站点的时候不用这种格式的地址了怎么办?那时候就要重新提交sitemap。呵呵,除此之外似乎没有别的任何问题。不过,依我的经验,不会变的。