SAE环境下为WordPress增加Google XML Sitemaps
2011-09-09由于新浪SAE(Sina App Engine)禁用了一些本地文件的操作函数,导致SAE环境下并不能直接使用WordPress的站点地图功能。为解决此问题,有热心的网友将Google XML Sitemaps插件移植到了SAE,也就是Google XML Sitemaps For SAE插件。该插件成功地解决了SAE环境下无法使用站点地图的问题。
Google XML Sitemaps For SAE插件通过将生成的SiteMap XML存放到Storage中,成功地绕开了SAE环境的限制。但是,其同时也带来了另外一个问题:由于SiteMap存储在Storage中,所以SiteMap的URL是类似于http://mawenjian-wordpress.stor.sinaapp.com/sitemap.xml这样的格式,SiteMap URL中的域名和你博客的域名显然不一致。大家都知道,在Google Webmaster中提交SiteMap的时候,需要保证你的SiteMap在你的站点的域名之下。所以,生成的这个站点地图就悲催了。。。
好在SAE提供了强大的FetchUrl功能,我写了一个简答的抓取页面Sitemap.php,当搜索引擎访问这个页面时,由SAE去Fetch前面生成的Sitemap文件,这样,路径问题就可以成功解决了。比如:我的站点地图的URL是:https://mawenjian.net/sitemap.php,而它实际上则是Fetch的Storage中的文件,只不过路径改变了而已。
下面是我的Sitemap.php页面的代码,相当简单:
//设置Content-Type类型为text/xml
header("Content-Type:text/xml ");
//通过SAEFetchurl函数进行抓取操作
$f = new SaeFetchurl();
$data = $f--->fetch("http://mawenjian-wordpress.stor.sinaapp.com/sitemap.xml");
//输出数据
echo $data;
上述代码并没有做任何优化,如果访问量大的话,可以考虑将Fetch的数据放在MemCache中;或者使用Storage操作函数取代Fetchurl函数读取数据。这样可以省些豆子。
发表回复