วิธีระบุ Canonical URL ด้วย rel="canonical" และวิธีการอื่นๆ

หากต้องการระบุ Canonical URL สําหรับหน้าเว็บที่ซ้ำกันหรือคล้ายกันมากกับ Google Search คุณสามารถระบุค่ากําหนดได้หลายวิธี ลองดูตัวอย่างว่ารายการเหล่านี้มีผลต่อการกําหนดหน้า Canonical มากน้อยเพียงใด

โปรดทราบว่าเมธอดเหล่านี้สามารถใช้ซ้อนกันได้ และมีประสิทธิภาพมากขึ้นเมื่อนํามารวมกัน ซึ่งหมายความว่าหากคุณใช้ 2 วิธีขึ้นไปจะช่วยเพิ่มโอกาสให้ Canonical URL ที่ต้องการปรากฏในผลการค้นหา

แม้ว่าเราจะสนับสนุนให้คุณใช้วิธีการเหล่านี้ แต่ก็ไม่ได้เป็นข้อบังคับ เว็บไซต์ของคุณน่าจะทํางานได้ดีแม้ไม่ได้ระบุหน้า Canonical ไว้ นั่นเป็นเพราะว่าหากคุณไม่ได้ระบุ Canonical URL ไว้ Google จะพิจารณาอย่างเหมาะสมว่า URL ใดเป็นเวอร์ชันที่ดีที่สุดสำหรับแสดงต่อผู้ใช้ใน Search

เหตุผลที่ต้องระบุ Canonical URL

แม้ว่าโดยทั่วไปแล้วไม่จําเป็นต้องระบุ Canonical URL ที่ต้องการ แต่ก็มีเหตุผลหลายประการที่คุณควรบอกให้ Google ทราบอย่างชัดเจนเกี่ยวกับหน้า Canonical ในชุดหน้าเว็บที่ซ้ำกันหรือคล้ายกัน

  • เพื่อระบุ URL ที่ต้องการให้ผู้ใช้เห็นในผลการค้นหา คุณอาจต้องการให้ผู้ใช้เข้าถึงหน้าผลิตภัณฑ์ชุดกระโปรงสีเขียวผ่าน https://www.example.com/dresses/green/greendress.html ไม่ใช่ https://example.com/dresses/cocktail?gclid=ABCD
  • เพื่อรวมสัญญาณลิงก์ของหน้าที่คล้ายกันหรือซ้ำกัน ซึ่งจะช่วยให้เครื่องมือค้นหาสามารถรวมสัญญาณของ URL (เช่น ลิงก์ที่เชื่อมไปยังเนื้อหา) แต่ละรายการไว้ใน URL เดียวที่ต้องการได้ ซึ่งหมายความว่าสัญญาณจากเว็บไซต์อื่นที่ชี้ไปยัง https://example.com/dresses/cocktail?gclid=ABCD จะรวมเข้ากับลิงก์ที่ไปยัง https://www.example.com/dresses/green/greendress.html หากลิงก์หลังเป็น Canonical
  • เพื่อลดความซับซ้อนของเมตริกการติดตามสำหรับเนื้อหา URL ที่หลากหลายจะทำให้การรวมเมตริกสำหรับเนื้อหาที่เจาะจงทำได้ยากขึ้น
  • เพื่อหลีกเลี่ยงการใช้เวลาในการรวบรวมข้อมูลจากหน้าที่ซ้ำกัน คุณอาจต้องการให้ Googlebot ใช้เวลาอย่างคุ้มค่าที่สุดในเว็บไซต์ของคุณ ดังนั้นจึงควรให้ Googlebot ใช้เวลาไปกับการ Crawl หน้าเว็บใหม่ (หรือหน้าที่อัปเดต) มากกว่าจะมาเสียเวลา Crawl เนื้อหาเดียวกันในเวอร์ชันที่ซ้ำกัน

แนวทางปฏิบัติแนะนำ

สําหรับทุกวิธีการกําหนดหน้า Canonical ให้ทําตามแนวทางปฏิบัติแนะนําต่อไปนี้

  • อย่าใช้ไฟล์ robots.txt ในการกำหนดหน้า Canonical
  • อย่าใช้เครื่องมือนำ URL ออกเพื่อจุดประสงค์ในการกำหนดหน้า Canonical เพราะจะเป็นการซ่อน URL ทุกเวอร์ชันจากการค้นหาของ Search
  • อย่าระบุ URL ที่ต่างกันเป็น Canonical สำหรับหน้าเว็บเดียวกันโดยใช้เทคนิคการกำหนดหน้า Canonical ที่เหมือนกัน (เช่น อย่าระบุ URL หนึ่งใน Sitemap แต่ระบุ URL อื่นสำหรับหน้าเดียวกันนั้นโดยใช้ rel="canonical"
  • อย่าระบุส่วนย่อย URL เป็น Canonical เนื่องจากโดยทั่วไป Google ยังไม่รองรับส่วนย่อย URL
  • เราไม่แนะนําให้ใช้ noindex เพื่อป้องกันการเลือกหน้า Canonical ภายในเว็บไซต์เดียว เนื่องจากจะบล็อกหน้าจาก Search โดยสมบูรณ์ แต่อยากให้ใช้คําอธิบายประกอบ rel="canonical" link มากกว่า
  • หากใช้เอลิเมนต์ hreflang ให้ตรวจสอบว่าได้ระบุหน้า Canonical ที่ใช้ภาษาเดียวกัน หรือภาษาแทนที่ดีที่สุดหากไม่มีหน้า Canonical สําหรับภาษาเดียวกัน
  • เมื่อทำการลิงก์ภายในเว็บไซต์ ให้ลิงก์ไปยัง Canonical URL มากกว่าจะลิงก์ไปยัง URL ของหน้าที่ซ้ำกัน การลิงก์ไปยัง URL ที่คุณเลือกให้เป็นหน้า Canonical อย่างสอดคล้องกันช่วยให้ Google เข้าใจสิ่งที่คุณต้องการ

ตารางเปรียบเทียบวิธีกําหนดหน้า Canonical

ตารางต่อไปนี้จะเปรียบเทียบวิธีการกําหนดหน้า Canonical ต่างๆ โดยไฮไลต์จุดแข็งและจุดอ่อนด้านการบํารุงรักษาและประสิทธิผลในสถานการณ์ต่างๆ

วิธีและคำอธิบาย
เอลิเมนต์ของ rel="canonical" link

เพิ่มเอลิเมนต์ของ <link> ในโค้ดสำหรับหน้าที่ซ้ำกันทั้งหมดที่ชี้ไปยังหน้า Canonical

ข้อดี
  • แมปหน้าที่ซ้ำกันได้ไม่จำกัดจำนวน
ข้อเสีย
  • การรักษาการแมปในเว็บไซต์ขนาดใหญ่หรือเว็บไซต์ที่มีการเปลี่ยนแปลง URL บ่อยๆ อาจซับซ้อน
  • ใช้งานได้เฉพาะกับหน้า HTML ไม่ใช่สำหรับไฟล์ เช่น PDF ในกรณีเช่นนี้คุณใช้ส่วนหัว HTTP ของ rel="canonical" ได้
ส่วนหัว HTTP ของ rel="canonical"

ส่งส่วนหัว rel="canonical" ในการตอบกลับของหน้าเว็บ

ข้อดี
  • ขนาดหน้าไม่เพิ่มขึ้น
  • แมปหน้าที่ซ้ำกันได้ไม่จำกัดจำนวน
ข้อเสีย
  • การรักษาการแมปในเว็บไซต์ขนาดใหญ่หรือเว็บไซต์ที่มีการเปลี่ยนแปลง URL บ่อยๆ อาจซับซ้อน
แผนผังเว็บไซต์

ระบุหน้า Canonical ใน Sitemap

ข้อดี

  • ดำเนินการและบำรุงรักษาได้ง่ายโดยเฉพาะอย่างยิ่งในเว็บไซต์ขนาดใหญ่

ข้อเสีย

  • Google ยังคงต้องระบุหน้าเว็บที่ซ้ำกันที่เกี่ยวข้องสำหรับหน้า Canonical ใดก็ตามที่คุณประกาศใน Sitemap
  • สัญญาณที่ส่งไปยัง Google มีความสำคัญน้อยกว่าเทคนิคการแมปแบบ rel="canonical"
การเปลี่ยนเส้นทาง ใช้การเปลี่ยนเส้นทางเพื่อแจ้งให้ Googlebot ทราบว่า URL เปลี่ยนเส้นทางเป็นเวอร์ชันที่ดีกว่า URL ที่ระบุ ใช้ตัวเลือกนี้เฉพาะเมื่อเลิกใช้หน้าที่ซ้ำ
รูปแบบ AMP หากมีตัวแปรที่เป็นหน้า AMP ให้ทำตามหลักเกณฑ์ AMP เพื่อระบุหน้า Canonical และรูปแบบ AMP

Google รองรับคําอธิบายประกอบที่ชัดแจ้งของ rel canonical link ตามที่อธิบายไว้ใน RFC 6596 ระบบจะไม่สนใจคำอธิบายประกอบ rel="canonical" ที่แนะนำหน้าเวอร์ชันอื่น โดยเฉพาะคำอธิบายประกอบ rel="canonical" ที่ไม่ได้ใช้แอตทริบิวต์ hreflang, lang, media และ type สำหรับการกำหนดหน้า Canonical โปรดใช้คำอธิบายประกอบ link ที่เหมาะสมแทนเพื่อระบุทางเลือกอื่นของหน้าเว็บ ตัวอย่างเช่น link rel="alternate" hreflang สำหรับคำอธิบายประกอบภาษาและประเทศ

คุณระบุคําอธิบายประกอบ rel="canonical" link ได้ 2 วิธีดังนี้

เราขอแนะนําให้คุณเลือกหนึ่งใน 2 วิธีนี้ เพราะแม้ว่าระบบจะรองรับ แต่การใช้ทั้ง 2 วิธีพร้อมกันอาจมีโอกาสเกิดข้อผิดพลาดขึ้นได้ (เช่น คุณอาจระบุ URL หนึ่งในส่วนหัว HTTP และอีก URL หนึ่งในเอลิเมนต์ของ rel="canonical" link)

เอลิเมนต์ของ rel="canonical" link (หรือที่เรียกว่าเอลิเมนต์ของ Canonical) เป็นเอลิเมนต์ที่ใช้ในส่วน head ของ HTML เพื่อระบุว่าหน้าอื่นเป็นตัวแทนของเนื้อหาในหน้าเว็บ

สมมติว่าคุณต้องการให้ https://example.com/dresses/green-dresses เป็น Canonical URL แม้ว่าจะมี URL หลายรายการที่เข้าถึงเนื้อหานี้ได้ก็ตาม ให้ระบุ URL นี้เป็น Canonical ตามขั้นตอนต่อไปนี้

  1. เพิ่มเอลิเมนต์ <link> ที่มีแอตทริบิวต์ rel="canonical" ลงในส่วน <head> ของหน้าที่ซ้ำกันซึ่งชี้ไปยังหน้า Canonical ตัวอย่าง:
    <html>
    <head>
    <title>Explore the world of dresses</title>
    <link rel="canonical" href="https://example.com/dresses/green-dresses" />
    <!-- other elements -->
    </head>
    <!-- rest of the HTML -->
  2. หากหน้า Canonical มีเวอร์ชันอุปกรณ์เคลื่อนที่ใน URL แยกต่างหาก ให้เพิ่มเอลิเมนต์ของ rel="alternate" link ไปยังหน้าเวอร์ชันอุปกรณ์เคลื่อนที่ ดังนี้
    <html>
    <head>
    <title>Explore the world of dresses</title>
    <link rel="alternate" media="only screen and (max-width: 640px)"  href="https://m.example.com/dresses/green-dresses">
    <link rel="canonical" href="https://example.com/dresses/green-dresses" />
    <!-- other elements -->
    </head>
    <!-- rest of the HTML -->
  3. เพิ่ม hreflang หรือเอลิเมนต์อื่นๆ ที่เหมาะสำหรับหน้านั้น

ใช้เส้นทางสมบูรณ์แทนเส้นทางสัมพัทธ์พร้อมด้วยเอลิเมนต์ของ rel="canonical" link แม้ว่า Google จะรองรับเส้นทางแบบสัมพัทธ์ แต่ก็อาจทําให้เกิดปัญหาได้ในระยะยาว (เช่น หากคุณอนุญาตให้ทำการ Crawl เว็บไซต์ทดสอบโดยไม่ได้ตั้งใจ) เราจึงไม่แนะนําให้ใช้เส้นทางดังกล่าว

ตัวอย่างที่ดี https://www.example.com/dresses/green/greendress.html

ตัวอย่างที่ไม่ดี /dresses/green/greendress.html

ระบบจะยอมรับ rel="canonical" link element ก็ต่อเมื่อปรากฏใน <head> ของ HTML เท่านั้น คุณจึงควรตรวจสอบให้ดีว่าส่วน <head> ของ HTML ถูกต้องแล้ว

หากใช้ JavaScript เพื่อเพิ่มเอลิเมนต์ของ rel="canonical" link ให้ตรวจสอบว่าได้แทรกเอลิเมนต์ของลิงก์ Canonical อย่างถูกต้องแล้ว

ส่วนหัว HTTP ของ rel="canonical"

หากคุณเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ได้ ก็สามารถใช้ ส่วนหัวการตอบกลับ HTTP ของ link ที่มีแอตทริบิวต์เป้าหมาย rel="canonical" ตามที่กำหนดโดย RFC5988 แทนการใช้องค์ประกอบ HTML เพื่อระบุ Canonical URL สำหรับเอกสารที่ Search รองรับ รวมถึงเอกสารที่ไม่ใช่ HTML เช่น ไฟล์ PDF

Google รองรับวิธีการนี้สำหรับผลการค้นหาเว็บเท่านั้น

หากคุณเผยแพร่เนื้อหาในหลายรูปแบบไฟล์ เช่น PDF หรือ Microsoft Word โดยแต่ละรายการมี URL ของตัวเอง คุณสามารถส่งส่วนหัว HTTP ของ rel="canonical" เพื่อบอก Googlebot ว่า URL ใดคือ Canonical URL สำหรับไฟล์ที่ไม่ใช่ HTML ตัวอย่างเช่น หากต้องการระบุว่า เวอร์ชัน PDF ของไฟล์ .docx ควรเป็นหน้า Canonical คุณอาจเพิ่มส่วนหัว HTTP นี้สําหรับเวอร์ชัน .docx ของเนื้อหา

HTTP/1.1 200 OK
Content-Length: 19
...
Link: <https://www.example.com/downloads/white-paper.pdf>; rel="canonical"
...

เช่นเดียวกับเอลิเมนต์ rel="canonical" link ให้ใช้ URL ที่สมบูรณ์ในส่วนหัว HTTP ของ rel="canonical" และตาม RFC2616 ให้ใช้เฉพาะเครื่องหมายคําพูดคู่ครอบ URL ไว้เท่านั้น

ใช้แผนผังเว็บไซต์

เลือก Canonical URL สำหรับหน้าเว็บแต่ละหน้า และส่ง URL เหล่านั้นผ่าน Sitemap ระบบจะมองว่าหน้าเว็บทั้งหมดที่ระบุใน Sitemap เป็นหน้า Canonical และ Google จะเป็นผู้ตัดสินว่าหน้าเว็บใดซ้ำกัน (ถ้ามี) โดยพิจารณาจากความคล้ายคลึงกันของเนื้อหา

การแสดง Canonical URL ที่ต้องการใน Sitemap เป็นวิธีที่ง่ายในการกําหนด Canonical URL สําหรับเว็บไซต์ขนาดใหญ่ และ Sitemap ก็มีประโยชน์สำหรับการบอกให้ Google ทราบถึงหน้าเว็บที่คุณมองว่าสําคัญที่สุดในเว็บไซต์

ใช้การเปลี่ยนเส้นทาง

ใช้วิธีการนี้เมื่อคุณต้องการกําจัดหน้าเว็บซ้ำที่มีอยู่ วิธีการเปลี่ยนเส้นทางทั้งหมด การเปลี่ยนเส้นทาง 301 และ 302, meta-refresh และการเปลี่ยนเส้นทางของ JavaScript จะส่งผลเหมือนกันใน Google Search แต่สำหรับเครื่องมือค้นหาต้องใช้เวลาสักระยะจึงจะเห็นว่าวิธีการเปลี่ยนเส้นทางต่างๆ อาจแตกต่างกัน

เพื่อให้มีผลเร็วที่สุด ให้ใช้การเปลี่ยนเส้นทาง HTTP 3xx (หรือที่เรียกว่าฝั่งเซิร์ฟเวอร์)

สมมติว่าสามารถเข้าถึงหน้าของคุณได้หลายวิธี

  • https://example.com/home
  • https://home.example.com
  • https://www.example.com

ให้เลือก URL เหล่านั้นรายการใดรายการหนึ่งเป็น Canonical URL และใช้การเปลี่ยนเส้นทางเพื่อส่งการเข้าชมจาก URL อื่นๆ ไปยัง URL ที่คุณต้องการ

สัญญาณอื่นๆ

นอกเหนือจากวิธีการที่ระบุไว้อย่างชัดเจนแล้ว Google ยังใช้ชุดสัญญาณการกำหนดหน้า Canonical ที่โดยทั่วไปแล้วจะอิงตามการตั้งค่าของเว็บไซต์ โดยจะเลือก HTTPS มากกว่า HTTP และเลือก URL ในคลัสเตอร์ hreflang

ใช้ HTTPS กับ Canonical URL แทนที่จะใช้ HTTP

Google จะเลือกหน้า HTTPS เป็นหน้า Canonical แทนที่จะเลือกหน้า HTTP ที่เทียบเท่ากัน ยกเว้นในกรณีที่มีปัญหาหรือสัญญาณที่บอกถึงความขัดแย้งกัน เช่น

  • หน้า HTTPS มีใบรับรอง SSL ที่ไม่ถูกต้อง
  • หน้า HTTPS มีการขึ้นต่อกันที่ไม่ปลอดภัย (นอกเหนือจากภาพ)
  • หน้า HTTPS เปลี่ยนเส้นทางผู้ใช้ไปยังหรือผ่านหน้า HTTP
  • หน้า HTTPS มี rel="canonical" link ไปยังหน้า HTTP

แม้ว่าโดยค่าเริ่มต้น ระบบของเราจะเลือกใช้หน้า HTTPS แทนหน้า HTTP แต่จะดำเนินการต่อไปนี้เพื่อให้มั่นใจว่าเราจะเลือกใช้ HTTPS ก็ได้

  • เพิ่มการเปลี่ยนเส้นทางจากหน้า HTTP ไปยังหน้า HTTPS
  • เพิ่ม rel="canonical" link จากหน้า HTTP ไปยังหน้า HTTPS
  • ใช้ HSTS

หากต้องการป้องกันไม่ให้ Google ทำให้หน้า HTTP เป็นหน้า Canonical อย่างไม่ถูกต้อง ให้หลีกเลี่ยงการปฏิบัติดังต่อไปนี้

  • หลีกเลี่ยงการใช้ใบรับรอง TLS/SSL ที่ไม่ถูกต้องและการเปลี่ยนเส้นทาง HTTPS ไปยัง HTTP เนื่องจากจะส่งผลให้ Google เลือก HTTP เป็นหน้า Canonical ได้อย่างไม่ถูกต้อง และการนำ HSTS มาใช้ก็จะไม่ช่วยลบล้างค่ากำหนดดังกล่าว
  • อย่าใส่เวอร์ชัน HTTP ของหน้าเว็บใน Sitemap หรือในคําอธิบายประกอบ hreflang ที่ไม่ใช่เวอร์ชัน HTTPS
  • ระวังการใช้ใบรับรอง SSL/TLS กับรูปแบบโฮสต์ไม่ตรงกัน เช่น example.com ที่แสดงใบรับรองของ subdomain.example.com ใบรับรองจะต้องตรงกับ URL เว็บไซต์ที่สมบูรณ์ หรือเป็นใบรับรองแบบสัญลักษณ์แทนซึ่งใช้กับโดเมนย่อยหลายๆ รายการในโดเมนได้

เลือกใช้ URL ในคลัสเตอร์ hreflang มากกว่า

ในการกำหนดหน้า Canonical, Google อยากได้ URL ที่เป็นส่วนหนึ่งของคลัสเตอร์ hreflang มากกว่า เพื่อช่วยอํานวยความสะดวกในการแปลเว็บไซต์ เช่น หากทั้ง https://example.com/de-de/cats และ https://example.com/de-ch/cats ต่างก็ชี้ไปที่คําอธิบายประกอบ hreflang เหมือนกัน แต่ไม่ได้ชี้ไปที่หน้า https://example.com/de-at/cats ดังนั้นระบบจะเลือกใช้หน้า de-de และ de-ch เป็นหน้า Canonical แทนหน้า /de-at/ ที่ไม่ได้อยู่ในคลัสเตอร์ hreflang

อ่านข้อมูลเพิ่มเติมเกี่ยวกับการแก้ปัญหาและการกําหนดหน้า Canonical