Apa Itu Canonical Tag #
Canonical tag adalah elemen HTML di dalam yang memberi tahu mesin pencari URL mana yang Anda anggap sebagai versi utama ketika beberapa URL menampilkan konten yang sama atau hampir sama.
Dua hal penting yang sering disalahpahami:
- Canonical adalah petunjuk (hint), bukan perintah. Google mempertimbangkannya bersama sinyal lain (redirect, sitemap, tautan internal) dan boleh memilih URL lain bila sinyalnya bertentangan.
- Canonical bukan alat untuk menyembunyikan halaman. Fungsinya menyatukan duplikat, bukan melarang pengindeksan.
Dari Mana Duplikat URL Muncul #
Satu halaman bisa tampil di banyak alamat tanpa Anda sengaja membuatnya:
http://danhttps://wwwdan non-www- Dengan dan tanpa garis miring di akhir (
/layanandan/layanan/) - Parameter pelacakan dan penyortiran (
?utm_source=...,?sort=harga) - Halaman yang sama di beberapa kategori
- Versi cetak atau versi AMP
- Hasil pencarian internal yang bisa dirayapi
Tanpa sinyal yang jelas, Google harus menebak versi mana yang dipertahankan, dan tebakannya belum tentu sama dengan yang Anda inginkan.
Cara Memasang #
HTML biasa atau CMS. Tambahkan di . Plugin SEO WordPress seperti Yoast atau Rank Math melakukannya otomatis, tetapi tetap periksa hasilnya.
HTTP header. Untuk file non-HTML seperti PDF, gunakan header: Link: .
Next.js (App Router). Tentukan metadataBase di layout akar, lalu atur canonical per halaman:
// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }) {
return {
alternates: { canonical: `/blog/${params.slug}` },
};
}
Praktik yang direkomendasikan: setiap halaman memakai canonical yang menunjuk ke dirinya sendiri (self-referencing canonical), kecuali memang ada versi lain yang ingin dijadikan utama. Gunakan URL absolut lengkap dengan protokol, atau relatif terhadap metadataBase.
Tujuh Kesalahan yang Paling Sering Merusak #
1. Canonical dipatok ke halaman beranda di layout global #
Ini kesalahan yang paling merusak karena sulit terlihat. Jika layout akar menulis canonical: "https://contoh.com" dan halaman lain tidak menimpanya, setiap halaman mengaku sebagai duplikat beranda. Hasilnya, halaman-halaman itu kemungkinan besar tidak diindeks. Di Next.js 14, cara aman adalah menulis alternates: { canonical: "./" } di layout akar sehingga setiap rute otomatis menunjuk ke dirinya sendiri, lalu menimpanya hanya bila perlu.
2. Canonical menunjuk ke URL yang di-redirect #
Jika /a berkanonik ke /b, tetapi /b mengarahkan ke /c, sinyalnya berputar. Arahkan canonical langsung ke URL akhir yang menjawab 200.
3. Canonical menunjuk ke halaman noindex atau 404 #
Anda meminta Google mengutamakan halaman yang sekaligus Anda larang untuk diindeks. Sinyal ini saling meniadakan.
4. Protokol dan format tidak konsisten #
Sebagian halaman memakai http://, sebagian https://, sebagian dengan garis miring penutup, sebagian tanpa. Pilih satu bentuk standar dan pakai di mana-mana: canonical, sitemap, dan tautan internal.
5. Lebih dari satu canonical, atau canonical di luar
#
Plugin SEO dan tema yang sama-sama menambahkan canonical menghasilkan dua tag dengan nilai berbeda. Google mengabaikan canonical yang bertentangan. Canonical di luar juga tidak diproses.
6. Canonical bertentangan dengan sitemap dan tautan internal #
Jika sitemap mencantumkan URL A, semua tautan internal mengarah ke URL A, tetapi canonical menunjuk ke URL B, Google punya tiga sinyal melawan satu. Selaraskan semuanya.
7. Canonical dipakai sebagai pengganti redirect #
Jika sebuah halaman pindah permanen, gunakan redirect 301. Canonical dipakai ketika kedua URL harus tetap bisa diakses pengunjung.
Satu kasus khusus: halaman pagination (?page=2) sebaiknya berkanonik ke dirinya sendiri, bukan ke halaman 1, karena isinya berbeda.
Canonical, Redirect 301, atau Noindex? #
| Situasi | Gunakan |
|---|---|
| Halaman pindah permanen, URL lama tak perlu dipertahankan | Redirect 301 |
| Dua URL harus tetap aktif tetapi kontennya sama | Canonical |
| Halaman boleh diakses tetapi tidak boleh muncul di hasil pencarian | noindex |
| Versi bahasa berbeda dari halaman yang sama | Canonical ke diri sendiri + hreflang |
Untuk situs multi-bahasa, setiap versi bahasa berkanonik ke dirinya sendiri, bukan ke versi bahasa lain. Mengarahkan terjemahan ke halaman bahasa utama membuat terjemahan itu tidak diindeks.
Cara Memeriksa Apakah Canonical Anda Bekerja #
- Lihat sumber halaman (
Ctrl+U) dan carirel="canonical". Pastikan hanya ada satu dan nilainya benar. - Gunakan URL Inspection di Search Console. Bandingkan User-declared canonical (pilihan Anda) dengan Google-selected canonical (pilihan Google). Jika berbeda, ada sinyal yang bertentangan.
- Periksa laporan Page Indexing. Status yang relevan:
- Duplicate, Google chose different canonical than user: Google tidak mengikuti petunjuk Anda.
- Duplicate without user-selected canonical: Anda belum menentukan canonical.
- Alternate page with proper canonical tag: wajar untuk versi alternatif, tetapi masalah bila halaman ini seharusnya diindeks.
- Rayapi situs dengan crawler untuk menemukan canonical yang hilang, ganda, atau menunjuk ke URL yang di-redirect.
Cara membaca laporan tersebut dijelaskan di panduan Google Search Console.
Checklist Singkat #
- Setiap halaman yang ingin diindeks punya satu canonical yang menunjuk ke dirinya sendiri.
- Canonical memakai URL absolut atau relatif terhadap
metadataBase, dengan protokol dan format seragam. - Canonical menunjuk ke URL yang menjawab 200 dan bisa diindeks.
- URL di sitemap sama dengan URL canonical.
- Tautan internal mengarah ke versi canonical.
- Layout global tidak menulis canonical tetap untuk seluruh situs.
Canonical hanya satu bagian dari fondasi teknis. Gambaran besarnya ada di pilar Technical SEO dan Web Performance dan glosarium Technical SEO. Bagian pelengkap yang sering ikut bermasalah adalah sitemap XML dan robots.txt.
