不使用插件建立jekyll网站sitemap

解决一件事情,总是有很多方法可选

作为一个网站,加强搜索引擎的优化,俗称SEO优化总是很重要的事情。而重要手段之一就是建立自己网站的sitemap.xml。
原本jekyll有一个插件:jekyll-sitemap,但到了jekyll3.5版本以后,居然取消了,我还曾经奇怪为什么。直到后来发现,的确这个插件也没有什么太大的必要。
其实建立自己的sitemap.xml非常容易,不过就是在根目录增加一个sitemap.xml文件,其中使用liquid脚本语言把自己网站所有链接遍历一下成为xml文件即可,这里转载了别人的一个代码:

---
layout: null
sitemap:
  exclude: 'yes'
---

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  {% for post in site.posts %}
    {% unless post.published == false %}
    <url>
      <loc>{{ site.url }}{{ post.url }}</loc>
      {% if post.sitemap.lastmod %}
        <lastmod>{{ post.sitemap.lastmod | date: "%Y-%m-%d" }}</lastmod>
      {% elsif post.date %}
        <lastmod>{{ post.date | date_to_xmlschema }}</lastmod>
      {% else %}
        <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>
      {% endif %}
      {% if post.sitemap.changefreq %}
        <changefreq>{{ post.sitemap.changefreq }}</changefreq>
      {% else %}
        <changefreq>monthly</changefreq>
      {% endif %}
      {% if post.sitemap.priority %}
        <priority>{{ post.sitemap.priority }}</priority>
      {% else %}
        <priority>0.5</priority>
      {% endif %}
    </url>
    {% endunless %}
  {% endfor %}
  {% for page in site.pages %}
    {% unless page.sitemap.exclude == "yes" %}
    <url>
      <loc>{{ site.url }}{{ page.url | remove: "index.html" }}</loc>
      {% if page.sitemap.lastmod %}
        <lastmod>{{ page.sitemap.lastmod | date: "%Y-%m-%d" }}</lastmod>
      {% elsif page.date %}
        <lastmod>{{ page.date | date_to_xmlschema }}</lastmod>
      {% else %}
        <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>
      {% endif %}
      {% if page.sitemap.changefreq %}
        <changefreq>{{ page.sitemap.changefreq }}</changefreq>
      {% else %}
        <changefreq>monthly</changefreq>
      {% endif %}
      {% if page.sitemap.priority %}
        <priority>{{ page.sitemap.priority }}</priority>
      {% else %}
        <priority>0.3</priority>
      {% endif %}
    </url>
    {% endunless %}
  {% endfor %}
</urlset>

同时为了预定义一些参数,在_config.yml中再增加下面这样一节:

sitemap:
  lastmod: 2017-12-31
  priority: 0.7
  changefreq: 'weekly'
  exclude: 'yes'

其实这些参数,写到上面脚本中也是一样的,这样还是更规范一些吧。
因为修改了_config.yml,所以本地的jekyll server要重启动一下,然后你就会看到在_site文件夹中生成的sitemap.xml。
参考链接:
http://www.uberobert.com/generate-a-jekyll-sitemap/ https://stackoverflow.com/questions/13544241/generate-sitemap-in-jekyll-without-plugin