Menambahkan Custom Sitemap.xml SEO pada Blog Hugo
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.
- 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 }}
- 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>
- 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
.
- buat file baru di
/layouts/_default/
dengan namahome.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>
- 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"]
Jika perlu buatkan halaman konten untuk label di
/content/label/_index.md
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.