TL;DR
XMLサイトマップについての話
sitemap.xmlを作るためにsitemap.xmlを作るという小泉進次郎構文
layoutsフォルダに設置するだけ
サイトマップ(sitemaps)とは
Sitemaps(サイトマップ)標準は、ウェブマスターがサーチエンジンに、サイト内でクロールすべきURLを教えるための方式を規定するものである。サイトマップは、当該サイトにおけるURL全てをリストした、XMLファイルとして提供し、ウェブサイト運営者は各URLに付加的情報として、最終更新日時や更新頻度、他のURLとの相対的な重要度を加えたりできる。Sitemapsに対応したサーチエンジンでは、この情報を使って、サイトのクロールをより効率的に行えるようになる。サイトマップはサーチエンジンへのURL追加規約であり、URL排除規約であるrobots.txtを補完するものである。
サイトマップの必要性
検索エンジンにブログ内の情報を効率的に知ってもらうために作成します。
定期的にクローラーが巡回していていつかは見に来てくれますが、
時間がかかりますし、効率的に収集できるサイトは評価が高くなると思います。
Hugoでのサイトマップの生成
Hugoには自動的にXMLサイトマップを生成してくれる機能があります。
Hugo
コマンドでビルドを実行するとpublicの配下に作成されます。
│ config.toml
├─archetypes
├─content
├─data
├─layouts
├─public
│ │ .htaccess
│ │ index.html
│ │ index.xml
│ │ sitemap.xml ←ココ!
│ ├─categories
│ ├─js
│ ├─page
│ ├─plugins
├─resources
├─static
└─themes
特にいじらなくてもサイトマップを作成してくれて便利なのですが、
全てのパスを載せているため不要な部分も載ってしまっています。
タグやアーカイブのパスは無駄なのでカスタマイズしたいと思います。
今回の記事は以下のサイトを参考に作成いたしました。
サイトマップをオリジナルで作成できるようにする
手順は結構簡単です。
ファイルの作成
まず、layouts
フォルダの直下にsitemap.xml
という名前のファイルを作成します。
ちなみに文字列形式はUTF-8で書いてます。
sitemap.xml
ファイルの設置場所はココになります。
├─config.toml
├─archetypes
├─content
├─data
├─layouts
│ ├─_default
│ ├─partials
│ ├─robots.txt
│ └─sitemap.xml ←ココ!
├─public
│ ├─.htaccess
│ ├─index.html
│ ├─index.xml
│ ├─sitemap.xml
│ ├─categories
│ ├─js
│ ├─page
│ ├─plugins
│ └─tags
├─resources
├─static
└─themes
└─liva-hugo-master
記述内容
以下の内容をファイルに記入して保存してください。
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{{ range .Data.Pages }}{{ if .IsPage }}
<url>
<loc>{{ .Permalink }}</loc>
{{ if not .Lastmod.IsZero }}
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>
<changefreq>weekly</changefreq>
{{ end }}
</url>
{{ end }}{{ end }}
</urlset>
解説
基本的には参考元の受け売りになりますが、
Hugoが生成するページを全てSitemap.xmlに書き出します。
その過程でtagsなどのリンクがメインになっているページは
書き出さないように判定をしています。
XMLサイトマップを構成するタグは以下のサイトを参考にしています。
最低限必要な構成は以下の属性になります。
- urlset
- url
- loc
- lastmod
今回はこの項目に追加で<changefreq>
を追加しています。
クロール頻度をタグとして与えるものですが、
クローラーの特性上、
更新頻度が高いと思ったらこの情報とは関係なくクロールしていきますし、
逆に更新が低い場所は関係なくクロール頻度が下がります。
ですのでおまじない程度の参考情報として提供します。
robots.txtの記入
配置が終わったらrobots.txtに記入して、
クローラーにファイルを読んでもらうように仕向けます。
robots.txtの書き方は別記事に書きます。
robots.txtの末尾に以下を記入します。
Sitemap : {{ $.Site.BaseURL }}sitemap.xml
ルート直下にsitemap.xml
が作成されるのでそれを見に行くように書いてます。
これでsitemap.xmlの作成は終わりです。
参考
GoogleはXMLサイトマップの「URL」と「最終更新日」を気にする