近期集中为以前的一些网站添加了手机版,为了让搜索引擎优化的效果更佳,我们为手机版都添加了Mobile XML Sitemap,在MediaWiki网站中是逐一对电脑版中的地图文件进行人工修改保存,而在Drupal网站中我们采用的办法是自动实时转换,下面记录几个要点:
- 在设置手机版网站的时候sites/m.example.com/files目录可以做一个软链接到对应的电脑版sites/www.example.com/files目录,这样手机版就可以找到对应的站点地图文件;
- 这个找到的站点地图内容却是电脑版的,需要进行转换,我的办法是修改sites/all/modules/xmlsitemap/xmlsitemap.page.inc来实现,具体代码在后面;
- 修改后的xml sitemap有可能超过10M的大小限制,可以采取预先设置电脑版站点地图每个最多包含2.5万的办法来解决;
- 修改成功后,可以修改robots.txt来告知搜索引擎新的站点地图URL,并到Google Webmaster Tools、百度站长平台中主动添加网站、提交地图。
xmlsitemap.page.inc中修改的代码:
/* while (!feof($handle)) { print fread($handle, 1024*16); } */ //jamesqi 2012-5 $content=""; while (!feof($handle)) { $content.=fread($handle, 1024*16); } fclose($handle); $server=$_SERVER['SERVER_NAME']; switch ($server) { case 'm.114.mingluji.com': $source='114.mingluji.com'; break; case 'm.sale.mingluji.com': $source='sale.mingluji.com'; break; case 'm.goumai.mingluji.com': $source='goumai.mingluji.com'; break; default: $source=$server; } if ($source!=$server) { $content=str_replace("http://$source","http://$server",$content); $content=str_replace('<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">','<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">',$content); $content=str_replace('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">','<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">',$content); $content=str_replace('</url>','<mobile:mobile/></url>',$content); } print $content;
从上面可以看出,读取硬盘上的xml文件后,先进行了几个替换,然后再输出就符合Mobile XML Sitemap的规范了。
评论2
子域名和子目录两种手机版都支持
改了一下程序,子域名和子目录两种手机版都支持sitemap变换:
多语言的网站地图也可以采用转换方式产生
请看新博文《Drupal网站多语言版的站点地图自动转换》,其中对手机版的代码也进行了修改完善。