Menambahkan Custom Sitemap.xml SEO pada Blog Hugo

mrfdn author

Rafi

mrfdn.com - Secara bawaan HUGO sudah memberikan fitur sitemap pada setiap situs yang dibuat, hanya saja itu belum aktif. Terlebih jika anda membuat theme hugo sendiri . Maka modul sitemap harus diaktifkan terlebih dahulu.

Cara mengaktifkan sitemap di situs Hugo adalah cukup dengan meambahkan kode berikut pada file config.toml.

[sitemap]    
  changefreq = 'monthly'        
  filename = 'sitemap.xml'    
  priority = 0.5    

Setelah itu pastikan pada base url pada config.toml mengarah pada situs anda, bukan ditulis / saja.

baseURL = "https://namasitus .com/"

Setelah website Hugo anda live, secara otomatis anda bisa mengakses halaman /sitemap.xml anda dan mendapatkan sejumlah halaman yang terdapat pada situs anda.

Selanjutnya jika perlu gunakan cara berikut untuk membuat situs Hugo anda lebih SEO.

Daftar Isi

Konfigurasi sitemap.xml dan robot.txt HUGO yang SEO

Pengetahuan saya seputar SEO mengenai hal ini adalah saya tidak ingin index halaman tags dan categories pada SERP (search engine result page).

Karena halaman itu memang tidak perlu untuk diindex. Kecuali anda memang butuh halaman tersebut untuk dioptiomasi dengan lebih baik pada situs anda.

Jadi, saya pikir halaman yang perlu diindex oleh google hanyalah halaman artikel saja.

Untuk itu kita perlu melakukan exclude halaman taxonomy, dalam hal ini halaman tags dan categories di hugo.

Caranya cukup mudah.

  1. Copy baris ini lalu letakkan pada bagian <head> template hugo anda.
{{ if or (ne .Kind "page") (and (eq .Kind "page") (eq .Params.sitemap_exclude true)) }}
  <meta name="robots" content="noindex, nofollow" />
{{ end }}
  1. Kemudian buatlah file sitemap.xml pada /layouts/ lalu isi dengan kode ini. Ini adalah hasil modifikasi kode original dari sitemap original hugo
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- exclude index taxonomy -->
  {{ $pages := where $.Site.RegularPages ".Params.sitemap_exclude" "!=" true }}
<!-- end -->
  {{ range $pages }}
    {{- if .Permalink -}}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
  </url>
    {{- end -}}
  {{ end }}
</urlset>
  1. Setelah itu buat sebuah file robots.txt di dalam /layouts/ lalu paste kode ini di dalamnya
User-agent: *

Disallow: /tags/
Disallow: /categories/
Disallow: 404.html

Sitemap: {{ "sitemap.xml" | absLangURL }}

Selesai.

Anda bisa melakukan preview terlebih dahulu sebelum build situs hugo anda. Pada halaman /sitemap.xml anda tidak akan mendapatkan halaman /tags/ dan /categories/ dan setelah situs live, tunggu robot.txt bekerja untuk melakukan crawl dari awal terhadap situs anda.

Membuat file custom sitemap_taxonomy.xml terpisah dengan sitemap.xml bawaan

Ada sebuah kondisi dimana kita ingin memisahkan sitemap untuk artikel dengan taxonomy tertentu. Ini bisa dilakukan juga di hugo dengan cara seperti ini.

Contoh berikut kita akan set sitemap khusus untuk semua halaman taxonomy yang sudah diset dengan nama label.

  1. buat file baru di /layouts/_default/ dengan nama home.sitemap_label.xml lalu isi dengan kode berikut.
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- ganti .Data.Pages menjadi .Site.Pages -->
    {{ $pages := where $.Site.Pages ".Params.sitemap_exclude" "!=" true }}
    {{ range $pages }}
    {{ if (or (hasPrefix .RelPermalink "/label/" )) }}
    {{- if .Permalink -}}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
  </url>
  {{ end }}
  {{ end }}
  {{ end }}
</urlset>
  1. Kemudian pada file config hugo.toml buatlah paste pengaturan berikut:
# Custom sitemap for keywords only
[outputFormats]
  [outputFormats.sitemap_label]
    baseName = "sitemap_label"
    isPlainText = false
    mediaType = "application/xml"
    protocol = "xml://"
    path = "/"

[outputs]
  home = ["HTML", "sitemap_label"]
  1. Jika perlu buatkan halaman konten untuk label di /content/label/_index.md

  2. Jika perlu set juga file untuk layout halaman label di /layouts/label/indexlabel.html

Selesai.

Sekarang silahkan cek halaman sitemap taxonomy yang telah dibuat sesuai dengan nama file yang sudah dibuat, dalam hal ini url nya menjadi /sitemap_label.xml. Yang mana di dalamnya akan merender semua halaman /label/, /label/label1, /label/label2.

Selanjutnya pastikan untuk submit url sitemap.xml pada google search console , dengan cara cukup menambahkan /sitemap.xml setelah nama situs anda.

Akhir kata

Pada artikel ini kita sudah belajar bagaimana cara mengaktifkan sitemap dan setting robot.txt dan sitemap.xml Hugo supaya lebih SEO.

Semoga bermanfaat.

Ref : https://gohugo.io/templates/sitemap-template/

mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga