ลองนึกภาพร้านขายเสื้อยืดออนไลน์ของคุณ มีเสื้อรุ่นยอดนิยมหนึ่งตัว แต่ลูกค้าเข้าถึงหน้าสินค้านั้นได้จาก URL ตั้ง 4 แบบ — หนึ่งจากหน้าหมวด “เสื้อผู้ชาย” หนึ่งจากหน้า “สินค้าใหม่” หนึ่งจากลิงก์ที่มี ?color=blue ต่อท้าย และอีกหนึ่งจากเวอร์ชัน www ที่ลูกค้าพิมพ์เอง สำหรับคนเป็นมนุษย์ ทั้งสี่ลิงก์คือ “หน้าเดียวกัน” แต่สำหรับ Google มันคือ 4 หน้าที่แตกต่างกันแต่เนื้อหาเหมือนกันเป๊ะ
ผลที่ตามมาคือ Google สับสนว่าจะให้หน้าไหนติดอันดับ พลัง SEO (backlink, สัญญาณการจัดอันดับ) ถูกหารกระจายไปทั้งสี่ URL แทนที่จะรวมพลังอยู่ที่หน้าเดียว และในกรณีเลวร้าย Google อาจมองว่าคุณกำลังทำ “เนื้อหาซ้ำ” จนเลือกหน้าที่คุณไม่ต้องการมาแสดงในผลค้นหา
นี่คือปัญหาที่ Canonical Tag ถูกออกแบบมาเพื่อแก้ และมันคือหนึ่งใน Technical SEO พื้นฐานที่เว็บไซต์จำนวนมากในไทยตั้งผิดหรือไม่ได้ตั้งเลย บทความนี้จะพาคุณเข้าใจตั้งแต่ระดับแนวคิดไปจนถึงโค้ดจริงและการตรวจสอบ ให้คุณตั้ง canonical ได้ถูกต้องตั้งแต่ครั้งแรก
Canonical Tag คืออะไร?
Canonical tag (เขียนเต็มว่า rel="canonical") คือแท็ก HTML ที่บอก Google ว่า “ในบรรดา URL หลายตัวที่มีเนื้อหาเหมือนหรือคล้ายกันนี้ URL ตัวไหนคือ ตัวหลัก (canonical version) ที่คุณอยากให้แสดงในผลการค้นหา”
พูดง่ายๆ คือมันเป็น “ป้ายบอกทาง” ที่ชี้ไปยังเวอร์ชันต้นฉบับของหน้านั้น โดยวางไว้ใน <head> ของหน้าเว็บ หน้าตาเป็นแบบนี้:
<head>
<link rel="canonical" href="https://example.com/blue-t-shirt/" />
</head>
แท็กนี้บอก Google ว่า “ไม่ว่าผู้ใช้จะมาที่ URL นี้ผ่านทางไหน ขอให้ถือว่า https://example.com/blue-t-shirt/ คือหน้าจริง และโปรดรวมสัญญาณ SEO ทั้งหมดไปไว้ที่หน้านั้น”
จุดสำคัญที่ต้องเข้าใจ: canonical tag เป็น คำแนะนำ (hint/suggestion) ไม่ใช่คำสั่งบังคับเหมือน 301 redirect Google จะพิจารณาสัญญาณนี้ร่วมกับสัญญาณอื่น (เช่น ลิงก์ภายใน, sitemap, redirect) แล้วตัดสินใจเอง ในกรณีส่วนใหญ่ Google เคารพ canonical ที่คุณกำหนด แต่ถ้าคุณส่งสัญญาณขัดแย้งกัน Google อาจเลือก URL อื่นที่มันคิดว่าเหมาะกว่า — เราจะพูดถึงประเด็นนี้ในหัวข้อข้อผิดพลาด
Duplicate Content คืออะไร และทำไมถึงเป็นปัญหา
Duplicate content คือเนื้อหาที่เหมือนหรือคล้ายกันมากปรากฏบนหลาย URL ทั้งภายในเว็บเดียวกัน (internal) หรือข้ามเว็บ (cross-domain) สิ่งสำคัญที่หลายคนเข้าใจผิด: Google ยืนยันมาตลอดว่า ไม่มี “บทลงโทษ duplicate content” โดยตรง สำหรับเนื้อหาซ้ำที่ไม่ได้ตั้งใจหลอกลวง แต่ปัญหาที่แท้จริงนั้น “เงียบกว่า” และกัดกินอันดับของคุณอยู่เบื้องหลัง:
- พลัง SEO ถูกหาร — ถ้า backlink 10 ลิงก์ชี้มาที่ URL คนละตัวของหน้าเดียวกัน พลังจะกระจายแทนที่จะรวมเป็นหนึ่ง ทำให้ทุก URL อ่อนแอกว่าที่ควร
- Google เลือกหน้าผิดมาแสดง — บางครั้ง Google เลือก URL ที่มี parameter หรือเวอร์ชันที่ไม่สวยมาแสดงแทนหน้าหลักที่คุณต้องการ
- เปลือง Crawl Budget — Googlebot ต้องเสียเวลาไล่ crawl หน้าซ้ำๆ แทนที่จะไป crawl หน้าใหม่ที่สำคัญ ประเด็นนี้สำคัญมากสำหรับเว็บใหญ่ อ่านเพิ่มได้ที่บทความ การจัดการ Crawl Budget
- รายงานใน Search Console สับสน — ข้อมูลคลิก/Impression ถูกแยกตาม URL ทำให้วิเคราะห์ยาก
มีการประเมินกันในวงการ (ตัวเลขโดยประมาณ ~) ว่าเว็บอีคอมเมิร์ซขนาดกลางถึงใหญ่มัก มี URL ซ้ำซ้อนจาก parameter และ filter มากกว่า ~20-30% ของหน้าทั้งหมด ซึ่งถ้าไม่จัดการด้วย canonical จะกลายเป็นภาระมหาศาลของงบ crawl
rel=canonical ทำงานอย่างไรเบื้องหลัง
เมื่อ Googlebot เข้ามา crawl หน้าเว็บและเจอแท็ก rel="canonical" กระบวนการที่เกิดขึ้นคือ:
- Googlebot อ่านแท็ก ใน
<head>และบันทึก URL ที่ถูกชี้ว่าเป็น canonical - จัดกลุ่มหน้าซ้ำ — Google สร้างสิ่งที่เรียกว่า “duplicate cluster” รวมทุก URL ที่ชี้ไปที่ canonical เดียวกัน
- เลือก URL ตัวแทน — ในกลุ่มนั้น Google เลือกหนึ่ง URL เป็น “Google-selected canonical” เพื่อนำไป index และแสดงผล (โดยปกติจะตรงกับที่คุณกำหนด ถ้าสัญญาณไม่ขัดกัน)
- รวมสัญญาณ — backlink, ความเกี่ยวข้อง และสัญญาณการจัดอันดับของทุก URL ในกลุ่มถูกรวมไปที่ canonical ที่เลือก
สิ่งสำคัญ: หน้าที่ไม่ใช่ canonical ยังถูก crawl ได้ปกติ แต่จะไม่ถูก index แยกเป็นหน้าของตัวเอง คุณยังเห็นสถานะ “Duplicate, Google chose different canonical” หรือ “Alternate page with proper canonical tag” ใน Search Console ได้ ซึ่งถือว่าปกติถ้าตั้งใจ
เมื่อไหร่ต้องใช้ Canonical Tag — 5 สถานการณ์จริง
นี่คือกรณีที่พบบ่อยที่สุดในเว็บไซต์ไทย พร้อมตัวอย่างที่จับต้องได้:
1. Self-referencing canonical (ทุกหน้าควรมี)
หน้าทั่วไปทุกหน้าควรมี canonical ที่ ชี้กลับมาที่ตัวเอง เรียกว่า self-referencing canonical:
<!-- หน้า https://example.com/blog/canonical-tags/ -->
<link rel="canonical" href="https://example.com/blog/canonical-tags/" />
ทำไมถึงสำคัญ? เพราะมันป้องกัน parameter ที่หลุดเข้ามาโดยไม่ตั้งใจ (เช่น UTM tracking, ?fbclid=, session ID) ไม่ให้สร้างหน้าซ้ำ ถ้ามีคนแชร์ลิงก์ ?utm_source=facebook แท็ก self-referencing จะบอก Google ว่าเวอร์ชันสะอาดคือตัวจริง นี่คือ best practice ที่ CMS สมัยใหม่และปลั๊กอิน SEO ทำให้อัตโนมัติ
2. URL ที่มี Parameter (filter, sort, tracking)
หน้าหมวดสินค้าที่มีการกรอง/เรียงลำดับมักสร้าง URL แบบนี้:
example.com/shoes/example.com/shoes/?sort=priceexample.com/shoes/?color=black&size=42example.com/shoes/?utm_source=line
ถ้าเนื้อหาหลักเหมือนกัน ทุกเวอร์ชันควรตั้ง canonical ชี้ไปที่ example.com/shoes/ (แต่ระวัง — ถ้า filter เปลี่ยนสินค้าจริงจนเป็นเนื้อหาคนละชุด อาจต้องให้ index แยก ดูหัวข้อข้อผิดพลาด)
3. Pagination (หน้าที่ 2, 3, 4…)
ปัจจุบัน (2026) Google ไม่รองรับ rel="next" / rel="prev" แล้ว แนวทางที่ถูกต้องคือ: ให้แต่ละหน้าของ pagination มี self-referencing canonical ชี้ที่ตัวเอง ไม่ใช่ชี้กลับไปหน้าแรกทั้งหมด
<!-- หน้า /blog/page/2/ -->
<link rel="canonical" href="https://example.com/blog/page/2/" />
เหตุผล: หน้า 2, 3 มีรายการบทความ/สินค้าคนละชุด ถือเป็นเนื้อหาที่ต่างกัน การบังคับ canonical กลับไปหน้า 1 จะทำให้สินค้าในหน้า 2-3 ไม่ถูก index ซึ่งเป็นข้อผิดพลาดที่พบบ่อยมาก
4. เวอร์ชัน HTTP/HTTPS และ www/non-www
เว็บหนึ่งเว็บอาจเข้าถึงได้ถึง 4 แบบ:
http://example.comhttp://www.example.comhttps://example.comhttps://www.example.com
วิธีจัดการที่ดีที่สุดคือ 301 redirect ทุกเวอร์ชันไปที่ตัวเดียว (เช่น https://example.com) แล้วเสริมด้วย canonical ที่ชี้เวอร์ชันมาตรฐาน Canonical อย่างเดียวไม่พอในกรณีนี้ — ควรใช้ redirect เป็นหลัก เพราะมันบังคับได้เด็ดขาดกว่า
5. สินค้า/บทความเดียวกันที่เข้าถึงได้หลาย URL
เช่น สินค้าหนึ่งชิ้นอยู่ได้ทั้งใน example.com/category-a/product/ และ example.com/category-b/product/ หรือบทความที่ syndicate ไปเว็บอื่น (cross-domain) ในกรณี syndication เว็บที่ไปลงซ้ำควรใส่ canonical ชี้กลับมาที่ต้นฉบับของคุณ เพื่อรักษาเครดิตให้หน้าจริง
Canonical vs 301 Redirect vs Noindex — ต่างกันอย่างไร
นี่คือจุดที่หลายคนสับสนที่สุด ทั้งสามเครื่องมือจัดการ “หน้าที่ไม่อยากให้แข่งกันเอง” แต่ใช้คนละสถานการณ์ ตารางนี้สรุปให้เห็นชัด:
| ประเด็น | Canonical Tag | 301 Redirect | Noindex |
|---|---|---|---|
| ผู้ใช้ยังเข้าหน้าได้ไหม | ได้ (หน้ายังอยู่) | ไม่ได้ (เด้งไปหน้าใหม่) | ได้ (หน้ายังอยู่) |
| รวมพลัง SEO (link equity) | รวม (เป็น hint) | รวม (เกือบเต็ม) | ไม่รวม |
| Google บังคับตามไหม | คำแนะนำ | คำสั่งเด็ดขาด | คำสั่งเด็ดขาด |
| หน้าถูก index ไหม | ไม่ (index แค่ canonical) | ไม่ (ไม่มีหน้าแล้ว) | ไม่ |
| ใช้เมื่อ | มีหลาย URL ที่ยังต้องการให้เข้าถึงได้ | ย้าย/รวมหน้าถาวร | ไม่อยากให้หน้าติด search แต่ยังให้คนเข้าได้ |
สรุปวิธีเลือกแบบจำง่าย:
- ต้องการให้ทั้งสอง URL ยังเข้าถึงได้ แต่บอก Google ว่าตัวไหนหลัก → Canonical
- ต้องการย้ายหน้าถาวรและไม่ต้องการ URL เก่าอีก → 301 Redirect
- ต้องการให้คนเข้าหน้าได้ แต่ไม่อยากให้โผล่ในผลค้นหาเลย (เช่น หน้า thank-you, หน้า login, ผลค้นหาภายในเว็บ) → Noindex
ข้อควรระวังสำคัญ: อย่าใช้ canonical และ noindex บนหน้าเดียวกันพร้อมกัน เพราะส่งสัญญาณขัดแย้ง (canonical = “รวมหน้านี้เข้ากับอีกหน้า” แต่ noindex = “ตัดหน้านี้ออก”) Google จะสับสนและอาจตีความผิดทั้งคู่ เลือกอย่างใดอย่างหนึ่ง สำหรับภาพรวมเครื่องมือ Technical SEO ทั้งหมด อ่านได้ที่ Technical SEO Checklist 2026
วิธีตั้ง Canonical ใน WordPress (Yoast / Rank Math)
ข่าวดีสำหรับคนใช้ WordPress: ปลั๊กอิน SEO ยอดนิยมทำ self-referencing canonical ให้อัตโนมัติทุกหน้า อยู่แล้ว คุณแค่ต้องตั้งค่าเพิ่มเฉพาะกรณีพิเศษ
Yoast SEO
- เปิดหน้า/โพสต์ที่ต้องการ → เลื่อนลงไปที่กล่อง Yoast SEO
- คลิกแท็บ Advanced (ไอคอนรูปเฟือง)
- ในช่อง Canonical URL ใส่ URL หลักที่ต้องการชี้ไป (ถ้าเว้นว่าง Yoast จะใช้ self-referencing ให้เอง)
- กด Update
Rank Math
- เปิดหน้า/โพสต์ → ในกล่อง Rank Math คลิกแท็บ Advanced
- หาช่อง Canonical URL แล้วใส่ URL หลัก
- บันทึก
คำเตือนเรื่องร้านค้า WooCommerce: หน้าสินค้าที่อยู่ในหลายหมวด หรือหน้า filter ของ WooCommerce มักสร้าง URL ซ้ำเยอะ ตรวจสอบให้แน่ใจว่า canonical ของหน้า filter ชี้กลับไปหน้าหมวดหลัก และอย่าลืมตั้งให้ parameter ทั่วไป (เช่น orderby) ไม่สร้างหน้า index แยก
วิธีตั้ง Canonical ในเว็บ Custom (HTML / Astro / React)
ถ้าคุณไม่ได้ใช้ WordPress คุณต้องใส่แท็กลงใน <head> เอง สิ่งสำคัญคือต้องเป็น URL แบบเต็ม (absolute URL) เสมอ ไม่ใช่ relative path:
<!-- ✅ ถูก: absolute URL -->
<link rel="canonical" href="https://southernwhale.com/blog/canonical-tags-guide-2026/" />
<!-- ❌ ผิด: relative path Google อาจตีความพลาด -->
<link rel="canonical" href="/blog/canonical-tags-guide-2026/" />
ตัวอย่างใน Astro (สร้าง canonical แบบ dynamic จาก URL ปัจจุบัน):
---
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
---
<head>
<link rel="canonical" href={canonicalURL.href} />
</head>
ตัวอย่างใน Next.js (App Router) ผ่าน metadata API:
export const metadata = {
alternates: {
canonical: 'https://example.com/blog/canonical-tags/',
},
};
ทางเลือกผ่าน HTTP Header (สำหรับไฟล์ที่ไม่ใช่ HTML เช่น PDF) — ใช้ Link header แทน:
Link: <https://example.com/file.pdf>; rel="canonical"
อย่าลืมว่า canonical ควรสอดคล้องกับ sitemap ด้วย — ใส่เฉพาะ URL ที่เป็น canonical ลงใน sitemap เท่านั้น ดูแนวทางที่ คู่มือ Sitemap XML
ข้อผิดพลาดเรื่อง Canonical ที่พบบ่อยที่สุด
จากการ audit เว็บไทยจำนวนมาก นี่คือความผิดพลาดที่เจอซ้ำๆ และวิธีแก้:
- Canonical ชี้ไปหน้า 404 หรือหน้าที่ redirect — ถ้า URL ที่คุณชี้ไปตายแล้ว หรือเด้งไปหน้าอื่น Google จะเพิกเฉยต่อ canonical นั้นทั้งหมด ตรวจให้แน่ใจว่า URL ปลายทางตอบ 200 OK เสมอ
- ชี้ canonical ผิดหน้า — เช่น ทุกหน้าในเว็บชี้กลับไปหน้าแรกหมด (homepage) ทำให้หน้าสินค้าและบทความทั้งเว็บไม่ถูก index นี่คือหายนะที่พบบ่อยจากการตั้งค่าผิดในเทมเพลต
- Canonical ชี้ไปหน้า noindex — ส่งสัญญาณขัดแย้ง Google ไม่รู้จะรวมหรือจะตัด
- ใช้ relative URL —
/page/แทนhttps://...เสี่ยงถูกตีความผิดโดเมน - มีหลาย canonical tag ในหน้าเดียว — Google จะเพิกเฉยทั้งหมด ตรวจว่าธีมหรือปลั๊กอินไม่ได้ใส่ซ้ำกับโค้ดที่คุณใส่เอง
- Canonical ใน
<body>— แท็กต้องอยู่ใน<head>เท่านั้น ถ้าหลุดเข้า body จะไม่มีผล (มักเกิดจาก JavaScript inject ผิดที่) - บังคับ pagination ชี้หน้าแรก — ทำให้รายการในหน้าลึกหายจาก index ตามที่อธิบายไปข้างต้น
- Mixed signals — canonical ชี้ A แต่ sitemap ใส่ B แต่ internal link ชี้ C — Google จะเลือกเองและอาจไม่ใช่ตัวที่คุณต้องการ ให้ทุกสัญญาณสอดคล้องกัน
วิธีตรวจสอบ Canonical Tag
หลังตั้งค่าแล้ว ต้องยืนยันว่ามันทำงานจริง นี่คือ 4 วิธีตรวจสอบ:
- View Source / Inspect — เปิดหน้าเว็บ คลิกขวา → View Page Source แล้วค้นหา (Ctrl+F) คำว่า
canonicalดูว่า URL ถูกต้องและมีแค่อันเดียว - Google Search Console → URL Inspection — วาง URL เข้าไป ดูที่ส่วน “Page indexing” จะบอกทั้ง “User-declared canonical” (ที่คุณตั้ง) และ “Google-selected canonical” (ที่ Google เลือกจริง) ถ้าสองค่านี้ไม่ตรงกัน แปลว่ามีสัญญาณขัดแย้งที่ต้องแก้
- เครื่องมือ Crawl — Screaming Frog, Ahrefs Site Audit หรือ Sitebulb สามารถ crawl ทั้งเว็บแล้วรายงานหน้าที่ canonical ผิด, ชี้ไป non-200, หรือไม่มี canonical เป็นวิธีที่เร็วที่สุดสำหรับเว็บใหญ่
- Browser Extension — ปลั๊กอินอย่าง Detailed SEO Extension หรือ SEO Minion แสดง canonical ของหน้าได้ทันทีในคลิกเดียว
แนะนำให้ตรวจ “Google-selected canonical” ใน Search Console เป็นประจำ เพราะนั่นคือสิ่งที่ Google เชื่อจริงๆ ไม่ใช่แค่สิ่งที่คุณประกาศ
คำถามที่พบบ่อย (FAQ)
Canonical tag จำเป็นไหมถ้าเว็บผมเล็กและไม่มีหน้าซ้ำ? จำเป็น — อย่างน้อยควรมี self-referencing canonical ทุกหน้า เพื่อกัน parameter tracking ที่หลุดเข้ามาโดยไม่รู้ตัว CMS ส่วนใหญ่ทำให้อัตโนมัติอยู่แล้ว
ตั้ง canonical แล้วอันดับจะดีขึ้นทันทีไหม? ไม่ทันที canonical ไม่ใช่ตัวเพิ่มอันดับโดยตรง แต่มันป้องกันการกระจายพลัง SEO และช่วยให้ Google โฟกัสหน้าที่ถูกต้อง ซึ่งส่งผลดีระยะยาว Google อาจใช้เวลาหลายวันถึงสัปดาห์กว่าจะ re-crawl และปรับตาม
Canonical ข้ามโดเมน (cross-domain) ใช้ได้ไหม? ได้ ใช้ในกรณี syndication — เว็บที่นำบทความคุณไปลงซ้ำใส่ canonical ชี้กลับมาต้นฉบับของคุณ Google รองรับ แต่บังคับน้อยกว่า canonical ภายในเว็บเดียวกัน
ถ้า Google เลือก canonical ไม่ตรงกับที่ผมตั้ง ต้องทำยังไง? ตรวจหาสัญญาณขัดแย้ง: ลิงก์ภายในชี้ไปหน้าไหนมากสุด, sitemap ใส่ URL ตัวไหน, มี redirect ไหม จัดทุกสัญญาณให้สอดคล้องกับ canonical ที่ต้องการ แล้ว Google จะค่อยๆ ปรับตาม
ที่ Southern Whale เราช่วยจัดการ Canonical ให้คุณ
ที่ Southern Whale เราดูแล Technical SEO ให้ธุรกิจ SME ในภาคใต้และทั่วไทย — รวมถึงการ audit หา duplicate content, วาง canonical ให้ถูกต้องทั้งเว็บ, จัดการ parameter URL และ pagination ให้ Google เก็บหน้าที่สำคัญได้เต็มที่ ถ้าคุณไม่แน่ใจว่าเว็บคุณตั้ง canonical ถูกหรือเปล่า หรือเจอปัญหา “Google chose different canonical” ใน Search Console เราช่วยตรวจและแก้ให้ครบจบในที่เดียว ดูรายละเอียด บริการ SEO ของเรา ได้เลย
สรุป
Canonical tag คือเครื่องมือพื้นฐานแต่ทรงพลังในการบอก Google ว่า URL ไหนคือเวอร์ชันหลักของหน้า เพื่อแก้ปัญหา duplicate content รวมพลัง SEO ให้อยู่ที่เดียว และประหยัด crawl budget สิ่งสำคัญที่ต้องจำ:
- ทุกหน้าควรมี self-referencing canonical เป็นพื้นฐาน
- ใช้ canonical กับ parameter URL, สินค้าหลาย URL และ syndication ส่วน pagination ให้ชี้ที่ตัวเอง ไม่ใช่หน้าแรก
- canonical เป็น คำแนะนำ ส่วน 301 และ noindex เป็น คำสั่ง เลือกใช้ให้ถูกสถานการณ์
- ตรวจ “Google-selected canonical” ใน Search Console เสมอ เพื่อจับสัญญาณขัดแย้งตั้งแต่เนิ่นๆ
ตั้งให้ถูกตั้งแต่ครั้งแรก แล้วเว็บของคุณจะส่งสัญญาณที่สะอาดและชัดเจนให้ Google — ซึ่งคือรากฐานของการทำ SEO ที่ยั่งยืนในปี 2026