Salah satu hal yang cukup lama saya tunda di blog ini adalah sitemap. Padahal sitemap itu penting untuk SEO — dia yang memberitahu Google halaman apa saja yang ada di situs kita dan kapan terakhir diupdate. Tanpa sitemap, Google masih bisa menemukan halaman-halaman kita, tapi dengan sitemap prosesnya jadi lebih terstruktur dan bisa lebih cepat.
Di artikel ini saya ceritakan bagaimana saya bikin sitemap.xml otomatis di blog ini — tanpa plugin, murni PHP.
Format Sitemap XML
Sitemap itu sebetulnya file XML dengan format yang sudah distandarisasi. Strukturnya tidak terlalu rumit:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://kawunganten.com/artikel/judul-artikel</loc>
<lastmod>2026-01-15</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Tag loc isinya URL halaman. lastmod kapan halaman itu terakhir diubah. changefreq seberapa sering halaman berubah — nilainya bisa always, hourly, daily, weekly, monthly, yearly, atau never. priority prioritas relatif halaman ini dibanding halaman lain di situs yang sama, nilainya 0.0 sampai 1.0.
Logika PHP-nya
Karena semua artikel tersimpan di database, saya tinggal query semua artikel yang sudah dipublish, lalu generate XML-nya secara dinamis. Saya buat file sitemap.php yang ketika diakses akan mengeluarkan konten XML:
<?php
header('Content-Type: application/xml; charset=utf-8');
$db = new PDO(/* koneksi database */);
$stmt = $db->query('SELECT slug, updated_at FROM posts ORDER BY updated_at DESC');
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// Halaman depan
echo '<url><loc>https://kawunganten.com</loc><priority>1.0</priority></url>';
foreach ($posts as $post) {
$lastmod = date('Y-m-d', strtotime($post['updated_at']));
echo '<url>';
echo '<loc>https://kawunganten.com/' . htmlspecialchars($post['slug']) . '</loc>';
echo '<lastmod>' . $lastmod . '</lastmod>';
echo '<changefreq>monthly</changefreq>';
echo '<priority>0.8</priority>';
echo '</url>';
}
echo '</urlset>';
?>
Lalu di file .htaccess, saya tambahkan rewrite rule supaya URL /sitemap.xml diarahkan ke file sitemap.php ini. Jadi dari sisi luar, sitemap.xml tetap terlihat seperti file XML biasa.
Dinamis vs Statis
Pendekatan di atas menggenerate sitemap secara dinamis setiap kali diakses. Artinya sitemap selalu fresh — setiap artikel baru langsung masuk tanpa perlu proses tambahan.
Tapi ada trade-off: kalau Google bot mengakses sitemap dan saat itu server sedang sibuk, bisa sedikit menambah beban. Untuk situs kecil seperti blog ini, ini tidak jadi masalah. Tapi untuk situs dengan ribuan halaman, pendekatan yang lebih baik mungkin adalah generate sitemap secara berkala lalu simpan sebagai file statis.
Daftarkan ke Google Search Console
Setelah sitemap jalan, langkah berikutnya mendaftarkannya ke Google Search Console. Masuk ke Search Console, pilih properti situs, lalu ke menu Sitemaps dan submit URL sitemap kita. Google akan mulai crawl dan validasi sitemap-nya.
Setelah submit, saya bisa lihat di Search Console berapa halaman yang ditemukan di sitemap, berapa yang sudah diindex Google, dan kalau ada error apa saja yang perlu diperbaiki. Fitur yang cukup informatif.
Hal sederhana yang seharusnya saya kerjakan lebih awal — tapi lebih baik terlambat daripada tidak sama sekali.
Kalau kamu juga punya blog atau website sendiri, sudah pasang sitemap belum? Dan pakai cara apa — generate sendiri atau plugin? Cerita di komentar.
Belum ada komentar. Jadilah yang pertama menulis.
Tulis Komentar