【SEO】Sitemap 站点地图详解

发表于2016-12-24   2012次阅读

网站的 sitemap(站点地图)文件对于 SEO 来说非常重要,可以用来引导爬虫的抓取,提高网站的抓取效率。本文详细介绍了制作 sitemap 的方法和工具。

站点地图的格式

xml 格式的 sitemap

xml 的 sitemap 最常用,格式规范,也比较有利于爬虫解析。国内外各大搜索引擎的 xml sitemap 格式要求一致,都是遵循国际规范,如下:

   <?xml version="1.0" encoding="utf-8"?>
   <!-- XML文件需以 utf-8/gbk 编码,推荐使用utf-8 -->
   <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <!--必填-->
       <url>
           <!--必填,定义某一个链接的入口,每一条数据必须要用<url>和</url>来标示 -->
           <loc>http://www.coderxing.com/index.html</loc>
           <!--必填,URL长度限制在256字节内-->
           <lastmod>2012-12-01</lastmod>
           <!--更新时间标签,非必填,用来表示最后更新时间-->
           <changefreq>daily</changefreq>
           <!--更新频率标签,非必填,用来告知引擎页面的更新频率 -->
           <priority>0.8</priority>
           <!--优先权标签,优先权值0.0-1.0,用来告知引擎该条url的优先级-->
       </url>
       <url>
            <loc>http://www.coderxing.com/test.html</loc>
       </url>
       ...
   </urlset>

各字段含义说明(参考 360 站长平台文档,百度、搜狗、神马的标准几乎一样):

标签名称 标签说明 标签类型 标签限制 可选/必选
changefreq 标示数据更新频率 字符串 有效值为:always、hourly、daily、weekly、monthly、yearly、never。该字段用来表示页面的更新频率,always 表示频繁更新,比如用在首页上,hourly 表示每小时会有更新,daily 表示每天更新,用这个值的最多,一次类推 可选
lastmod 标示数据最新一次更新时间 日期 时间格式为 yyyy-mm-dd ,例如 2016-12-15 可选
loc 标示该条数据的存放地址 url 最小长度1个字符,最大长度256个字符, 以 “http://” 开头,只能是绝对完成的 url ,不能使用类似 “./test.html” 这样额相对路径 必选
priority 标示优先值 小数 [0.0 1.0](大于等于 0 小于等于 1,保留一位小数),用来表示例如:< priority >0.8< priority > 可选
url 地址的开始和结束 单个文件最多 50000 条,神马搜索限制在10000 条一下。 必选
urlset urlset 用来标记整个文档的开头 必选

其他要点:

  • 文件编码使用 UTF-8(推荐) 或 GBK,推荐使用 UTF-8,google 对 sitemap 的默认使用 UTF-8 编码。
  • 单个 sitemap 文件不能超过 10MB。
  • 如果 sitemap 文件过大,需要拆分成多个文件,用 sitemap 索引文件来声明,搜狗官方文档推荐拆分文件不要超过 100 个,百度和 360 没有拆分数量方面的明确说明。
  • sitemap 文件可以 gzip 压缩来提高抓取速度,推荐以 .xml.gz 为后缀,例如 http://www.coderxing.com/sitemap_001.xml.gz
  • 需要对 url 中的特殊符号进行转义,如下表所示:
字符 转义码
& 符号 & &
单引号 ' '
双引号 " "
大于号 > >
小于号 < <
  • url 如果有中文要进行 encode 转义。
  • 其中 xml 命名空间声明地址 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 是 Google sitemap 规范要求添加的,国内的搜索引擎并没有强制要求。不过为了兼容性友好,最好加上。而且如果不声明的话,国外的一些 xml sitemap 正确性校验工具会报错。
  • 确保 xml 文件格式正确,推荐使用在线工具验证,工具如:

Google 对 sitemap 没有太多变化,甚至更简化,如:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
  <url>
    <loc>http://www.example.com/foo.html</loc>
  </url>
</urlset>

另外,Google 针对 sitemap 增加了一些扩展字段,可以携带图片和视频信息,如:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" 
  xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url> 
    <loc>http://www.example.com/foo.html</loc> 
    <image:image>
       <image:loc>http://example.com/image.jpg</image:loc>
       <image:caption>Dogs playing poker</image:caption>
    </image:image>
    <video:video>
      <video:content_loc>
        http://www.example.com/video123.flv
      </video:content_loc>
      <video:player_loc allow_embed="yes" autoplay="ap=1">
        http://www.example.com/videoplayer.swf?video=123
      </video:player_loc>
      <video:thumbnail_loc>
        http://www.example.com/thumbs/123.jpg
      </video:thumbnail_loc>
      <video:title>适合夏季的烧烤排餐</video:title>  
      <video:description>
        让您每次都能烤出诱人的排餐。
      </video:description>
    </video:video>
  </url>
</urlset>

Google 官方 sitemap 文件例子:

文本格式的站点地图

文本格式的站点地图极为简单,只需要按行排列 url 即可,没有 changefreq、lastmod、priority 这些功能,例如:

http://www.example1.com/111.html
http://www.example2.com/222.html
http://www.example3.com/333.html

注意:神马搜索不支持文本格式的 sitemap。推荐还是使用 xml 格式的 sitemap。

html sitemap

html 格式的 sitemap 是给用户使用的,作为网站历史信息的归档,而且也是对 xml sitemap 的重要补充。搜索蜘蛛除了按照 sitemap 文件来抓取页面之外,更主要的方式还是通过网站上的链接进行爬取,html sitemap 可以把更多的链接暴露给爬虫。格式上没要求,可以和你的网站风格保持一致,只要能把关键的链接暴露出来就可以。建议 xml 和 html 格式的 sitemap 同时使用。

html sitemap 习惯上放在页面的底部,作为 footer 的一部分。比如:

sitemap 索引

如果 sitemap 文件需要拆成多个,则需要用 sitemap 索引文件来声明分散的sitemap 文件,sitemap 文件可以用 gzip 压缩。例如:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <sitemap>
        <loc>http://www.coderxing.com/sitemap_001.xml</loc>
        <!-- 必填,识别Sitemap的位置 -->
        <lastmod>2016-12-12</lastmod>
        <!-- 选填,该链接的最后更新日期 -->
    </sitemap>
    <sitemap>
        <loc>http://www.coderxing.com/sitemap_002.xml</loc>
        <lastmod>2016-12-12</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://www.coderxing.com/sitemap_002.xml.gz</loc>
        <lastmod>2016-12-12</lastmod>
    </sitemap>
</sitemapindex>

其中的 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 在 google 规范里需要添加,国内搜索引擎并不强制,不过和 sitemap 文件一些样,为了兼容性,推荐还是加上。

sitemap 索引文件例子:

robots.txt 中添加 sitemap

在 robots.txt 文件中添加 Sitemap 字段,告诉爬虫我们的 sitemap 文件在哪里。例如:

Sitemap: http://www.coderxing.com/sitemap.xml

推荐写绝对路径网址。

参考例子:

另外,Sitemap 字段也可以设置多个,例如:

    Sitemap: http://www.gstatic.com/culturalinstitute/sitemaps/www_google_com_culturalinstitute/sitemap-index.xml
    Sitemap: http://www.gstatic.com/earth/gallery/sitemaps/sitemap.xml
    Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml
    Sitemap: https://www.google.com/sitemap.xml

sitemap 文件提交

(TODO)

参考资料

生成工具

如果没有技术资源自给开发 sitemap,可以选择一些可以自动生成 sitemap 文件的工具,比如:

  • 客户端工具:
  • 在线工具:

    • www.sitemap-xml.org,国内服务,免费版只能生成 100 条。
    • www.xml-sitemaps.com,国外服务,免费版 500 条。
  • 更多 sitemap 工具参见 SitemapGenerators.wiki
    • Google 官方出的文档,介绍得非常全面,但国内方要挂代理,还包括可一些编程语言的 sdk。