คำตอบสั้น ๆ: บอก Google ว่า URL ไหนคือตัวจริงเมื่อมีหลาย URL ที่แสดงเนื้อหาเดียวกัน พร้อมกรณีที่พบบ่อยและวิธีตรวจสอบว่าตั้งถูก
คู่มือนี้อธิบาย Canonical Tag ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เว็บหนึ่งหน้ามักเข้าถึงได้จากหลาย URL โดยที่เจ้าของไม่รู้ตัว เช่น มีทั้งแบบ www และไม่มี www มีพารามิเตอร์ติดตามต่อท้าย หรือหน้าสินค้าเดียวกันที่เข้าได้จากหลายหมวดหมู่ ในสายตาของ Google สิ่งเหล่านี้คือหน้าคนละหน้าที่มีเนื้อหาเหมือนกัน
ผลคือคะแนนความน่าเชื่อถือถูกกระจายไปหลาย URL แทนที่จะรวมอยู่ที่เดียว และ Google อาจเลือกแสดง URL ที่คุณไม่ต้องการ Canonical Tag คือวิธีบอกว่าอันไหนคือตัวจริง
สิ่งที่ต้องเตรียม (Canonical Tag)
- สิทธิ์แก้ไขส่วน head ของเว็บ หรือปลั๊กอิน SEO
- บัญชี Google Search Console ที่ยืนยันความเป็นเจ้าของแล้ว
ขั้นตอนที่ 1: หาว่ามีเนื้อหาซ้ำตรงไหน (Canonical Tag)
ใน Search Console ไปที่ Pages แล้วดูหัวข้อ
- Duplicate without user-selected canonical Google พบเนื้อหาซ้ำแต่คุณไม่ได้บอกว่าอันไหนตัวจริง
- Duplicate, Google chose different canonical than user คุณตั้งไว้แล้วแต่ Google ไม่เห็นด้วย ซึ่งมักแปลว่าตั้งผิดหรือหน้าที่ชี้ไปไม่เหมือนกันจริง
- Alternate page with proper canonical tag สถานะนี้ถูกต้องแล้ว ไม่ต้องแก้
ตรวจด้วยคำสั่งว่าหน้าเดียวกันเข้าได้จากกี่ทาง
for u in "https://example.com/product" "https://www.example.com/product" \
"http://example.com/product" "https://example.com/product/" \
"https://example.com/product?utm_source=fb"; do
code=$(curl -s -o /dev/null -w '%{http_code}' "$u")
canon=$(curl -sL "$u" | grep -oP '(?<=rel="canonical" href=")[^"]+' | head -1)
printf '%-50s %s canonical: %s\n' "$u" "$code" "$canon"
done
ทุกบรรทัดควรแสดง canonical เป็น URL เดียวกัน
ขั้นตอนที่ 2: เขียน Canonical ให้ถูกรูปแบบ
<link rel="canonical" href="https://example.com/product/" />
กฎที่ต้องทำตาม
- ใช้ URL แบบเต็ม เสมอ รวมโพรโทคอลและโดเมน ไม่ใช้พาธสัมพัทธ์
- ใส่ไว้ใน
<head>เท่านั้น หากอยู่ใน<body>Google จะไม่สนใจ - มีได้แท็กเดียวต่อหน้า หากมีหลายอัน Google จะไม่สนใจทั้งหมด
- ต้องชี้ไปยังหน้าที่ตอบ 200 ไม่ใช่หน้าที่ redirect หรือ 404
- เรื่องเครื่องหมายทับท้าย URL ต้องสอดคล้องกันทั้งเว็บ
ทุกหน้าควรมี Canonical แม้เป็นหน้าที่ไม่มีเวอร์ชันซ้ำ โดยชี้ไปที่ตัวเอง วิธีนี้ป้องกันปัญหาจากพารามิเตอร์ที่อาจถูกเพิ่มเข้ามาภายหลัง
ขั้นตอนที่ 3: กรณีที่พบบ่อยและวิธีจัดการ
พารามิเตอร์ติดตาม
/product?utm_source=facebook ควรมี canonical ชี้ไป /product ซึ่งปลั๊กอิน SEO ส่วนใหญ่ทำให้อัตโนมัติ
หน้าแบ่งหน้า
หน้า 2 ของรายการสินค้าควร canonical ชี้ไปที่ตัวเอง ไม่ใช่หน้า 1 การชี้กลับไปหน้า 1 ทำให้สินค้าในหน้าหลัง ๆ ไม่ถูกเก็บดัชนี
<!-- ที่ /products/page/2/ -->
<link rel="canonical" href="https://example.com/products/page/2/" />
สินค้าที่อยู่หลายหมวด
เลือกหมวดหลักหนึ่งหมวดเป็นตัวจริง แล้วให้ URL อื่นชี้มาที่นั่น ทางที่ดีกว่าคือออกแบบให้สินค้ามี URL เดียวตั้งแต่ต้น
สินค้าที่ต่างกันแค่สี
หากเนื้อหาเกือบเหมือนกันทั้งหมด ให้ canonical ชี้ไปตัวหลัก แต่หากแต่ละสีมีรายละเอียดและรูปต่างกันชัดเจน ควรให้แต่ละหน้าเป็นอิสระ
เวอร์ชันพิมพ์หรือ AMP
ชี้ canonical กลับไปหน้าปกติเสมอ
ขั้นตอนที่ 4: ตั้งใน WordPress
ปลั๊กอิน SEO ทุกตัวจัดการให้อัตโนมัติ ตรวจว่าไม่ได้มีสองปลั๊กอินใส่พร้อมกัน
curl -sL https://example.com/product/ | grep -c 'rel="canonical"'
ผลควรเป็น 1 หากได้ 2 ให้ปิดปลั๊กอินตัวใดตัวหนึ่งหรือปิดฟีเจอร์ canonical ของธีม
เขียนเองเมื่อจำเป็น
// ตั้ง canonical เฉพาะหน้าที่ต้องการ
add_filter('wpseo_canonical', function ($canonical) {
if (is_singular('product') && isset($_GET['variant'])) {
return get_permalink();
}
return $canonical;
});