注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

背归鸿

博闻强记,厚积薄发!

 
 
 

日志

 
 

Thinkphp生成多sitemap文件  

2014-07-26 12:11:15|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我们知道sitemap对于seo的重要性,很多介绍只生成一个文件sitemap.xml ,但是如果网站内容比较多,就要生成多个sitemap文件,因为搜索引擎对sitemap文件大小和条数有限制,比如google对每个sitemap文件的限制为5万条数据。

何为多sitemap文件机制? 首先我们生成一个主sitemap文件,此文件为sitemapindex类型,其中存放子sitemap文件的路径。子sitemap文件用来存放具体文章item. 这里我们假定每个子sitemap存放网址数为10000个。则代码如下(这里用的thinkphp框架,原理都是一样的):

<?php
class SitemapAction extends Action {
    
   //生成sitemap
    public function create() {
                $page_size    =    10000; //每页条数
                $bp_db    =    M('BaobeiProducts');
                //1w个地址生成一个子地图,判断需要生成几个?
                $count        =    $bp_db->where('status = 1')->count();
                $page_count    =    ceil($count/$page_size);  //分几个文件
               
                $this->create_index($page_count);    //生成主sitemap
                $this->create_child($page_count,$page_size);    //生成子sitemap
               
 
            $this->success('地图生成成功');
       
    }
   
    //生成主sitemap
    protected function create_index($page_count) {
   
                $content    =    "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<sitemapindex xmlns=\" http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n";
                for($i=1;$i<=$page_count;$i++) {
                   
                        $content    .="<sitemap>\r\n<loc> http://HOST/sitemap/sitemap".$i.".xml</loc>\r\n<lastmod>".date('Y-m-d')."</lastmod>\r\n</sitemap>";
                }
                $content .= "</sitemapindex>";
               
                $file = fopen("sitemap.xml","w");
            fwrite($file,$content);
            fclose($file);
   
   
   }
  
   //生成子sitemap
   protected function create_child($page_count,$page_size) {
      
       for($i=0;$i<$page_count;$i++) {

                   $list = M('BaobeiProducts')->field('id,m_time')->order('id asc')->limit($i*$page_size.','.$page_size)->select();
               
                $sitemap = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n";
                    foreach($list as $k=>$v){
                        $sitemap .= "<url>\r\n"."<loc>http://HOST/baobei/".$v['id']."</loc>\r\n"."<priority>0.6</priority>\r\n<lastmod>".date('Y-m-d',$v['m_time'])."</lastmod>\r\n<changefreq>weekly</changefreq>\r\n</url>\r\n";
             
                    }
                
                $sitemap .= '</urlset>';
                
                $file = fopen("sitemap/sitemap".($i+1).".xml","w");
                fwrite($file,$sitemap);
                fclose($file);
           }
       }
 
}
  评论这张
 
阅读(837)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017