334天前2019-11-28 10:38:55 |    抢沙发  325 
sitemap一般用一个文件就好了,但是对于大站来说是不够的,因为一般搜索引擎显示单个sitemap.xml文件不得大于10M且条数不得大于5W条。那么就需要用到sitemap索引文件了。文本介绍了sitemap索引文件的格式要求和sitemap.xml数据文件的格式要求。

sitemap

sitemap本来早就想弄了,但是由于比较忙,所以一直没有去弄,像百度一般都有主动推送,但是像一些比较小的搜索引擎就不支持主动推送了,360,搜狗,神马,以及新的今日头条,都不支持主动推送,所以今天就做了下sitemap。提供给大家参考一下。

sitemap索引文件格式:

<?xml version="1.0" encoding="utf-8" ?>
<sitemapindex>
 <sitemap>
 <loc>数据xml地址1</loc>
 <lastmod>对应的最后修改时间</lastmod>
 </sitemap>
 <sitemap>
 <loc>数据xml地址2</loc>
 <lastmod>对应的最后修改时间</lastmod>
 </sitemap>
</sitemapindex>
下面是sitemap文件格式:

<?xml version="1.0" encoding="utf-8"?>
<!-- XML文件需以utf-8编码-->
<urlset>
<!--必填标签-->
<url> 
<!--必填标签,这是具体某一个链接的定义入口,每一条数据都要用<url>和</url>包含在里面,这是必须的 -->  
<loc>http://www.32e.top/1.html</loc>
<!--必填,URL链接地址,长度不得超过256字节-->
<lastmod>2014-12-14</lastmod>
<!--可以不提交该标签,用来指定该链接的最后更新时间-->
<changefreq>daily</changefreq>
<!--可以不提交该标签,用这个标签告诉此链接可能会出现的更新频率 -->
<priority>0.8</priority>
<!--可以不提交该标签,用来指定此链接相对于其他链接的优先权比值,此值定于0.0-1.0之间-->
</url>
<url> 
<loc>http://www.32e.top/2.html</loc>
<lastmod>2019-11-28</lastmod> 
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>
上文是百度要求的sitemap格式,其他搜索引擎不知道是否通用。具体还待测试,如果不通用直接修改对应节点名称就好了。

下面附加一个php生成xml格式文件的函数(此函数基于CI):

//xml数据
public function baidu_xml(){
    //所有机构新闻
    $school_news_all = $this->32e->baidu_xml();
    $urls = array();
    foreach ($school_news_all as $key => $value) {
        $urls[] = array(
          'loc' => base_url('campus/'.$value->school_add_id.'.html'),
          'changefreq' => 'daily',
          'priority' => '0.8'
        );
    }
    $this->create_xml($urls);
}

//XML生成器
public function create_xml($urls,$attribute=array()){
    //  创建一个XML文档并设置XML版本和编码。。
    $dom=new DomDocument('1.0', 'utf-8');
    //  创建根节点
    $urlset = $dom->createElement('urlset');
    $dom->appendchild($urlset);

    foreach ($urls as $data) {
        $item = $dom->createElement('url');
        $urlset->appendchild($item);

        if (is_array($data)) {
            foreach ($data as $key => $val) {
              //  创建元素
              $$key = $dom->createElement($key);
              $item->appendchild($$key);
              //  创建元素值
              $text = $dom->createTextNode($val);
              $$key->appendchild($text);
              if (isset($attribute[$key])) {  //  如果此字段存在相关属性需要设置
                foreach ($attribute[$key] as $akey => $row) {
                  //  创建属性节点
                  $$akey = $dom->createAttribute($akey);
                  $$key->appendchild($$akey);
                  // 创建属性值节点
                  $aval = $dom->createTextNode($row);
                  $$akey->appendChild($aval);
                }
              }
            }
        }
    }
    header('Content-type: text/xml');
    echo $dom->saveXML();
}
再啰嗦一下,sitemap索引文件主要是解决大站点数据量太大一个文件无法容纳的问题。就是索引文件中包含所有的分布式xml文件。先到这里吧忙。。。


发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享