ข้ามไปยังเนื้อหา
KoishiAI
EN
← สารบัญ

บทที่ 2 จาก 5 · SEO สำหรับเว็บไทย — ให้ Google เจอ เข้าใจ และเลือกหน้าของคุณ

ให้ Google เจอและเก็บหน้าที่ใช่: robots.txt, noindex, canonical, sitemap และลิงก์ภายใน

เครื่องมือแต่ละตัวทำหน้าที่ต่างกัน ใช้ผิดตัวแล้วได้ผลตรงข้าม robots.txt ไม่ได้กันหน้าออกจาก Google, noindex ต้องให้ Google อ่านเห็นก่อน, canonical เป็นคำใบ้ และลิงก์ที่ซ่อนไว้ใน <details> ยังถูกตามอยู่

บทที่แล้วแบ่งงานของ Google เป็นสามขั้น บทนี้ว่าด้วยสองขั้นแรก คือทำให้ Google เจอหน้าที่เราอยากให้เจอ เก็บหน้าที่เราอยากให้เก็บ และไม่เปลืองเวลากับหน้าที่ไม่สำคัญ

2.1 เครื่องมือห้าตัว ทำหน้าที่ห้าอย่าง

ความผิดพลาดที่พบบ่อยที่สุดคือใช้เครื่องมือผิดตัว เช่น ใช้ robots.txt เพื่อซ่อนหน้า ซึ่งได้ผลตรงข้ามกับที่ตั้งใจ

อยากให้เกิดอะไรใช้อะไรอย่าใช้อะไร
ลดภาระเซิร์ฟเวอร์จากบอทrobots.txt—
ไม่ให้หน้าขึ้นผลค้นหาnoindex, ใส่รหัสผ่าน หรือลบหน้าrobots.txt
บอกว่าหน้าไหนคือตัวหลักเมื่อมีหลาย URLredirect หรือ rel="canonical"robots.txt, noindex
บอก Google ว่ามีหน้าอะไรบ้างsitemap—
ให้ Google เดินไปถึงหน้าและเข้าใจว่าหน้าเกี่ยวกับอะไรลิงก์ภายใน <a href>ลิงก์ที่ไม่มี <a href> เช่น ใช้ onclick อย่างเดียว

2.2 robots.txt: สำหรับจัดการภาระ ไม่ใช่สำหรับซ่อน

Google เขียนไว้ว่า robots.txt ใช้ “ส่วนใหญ่เพื่อไม่ให้เว็บรับคำขอมากเกินไป” และ “ไม่ใช่กลไกกันหน้าเว็บออกจาก Google”

ถ้าห้ามอ่านหน้าไหนด้วย robots.txt แต่มีคนลิงก์มาที่หน้านั้น Google ยังจัด URL เข้าดัชนีได้ โดยแสดง URL กับข้อความลิงก์ แต่ไม่รู้เนื้อหาข้างใน สุดท้ายหน้าก็ยังขึ้นผลค้นหาอยู่ดี แถมคำอธิบายก็ไม่ตรงกับเนื้อหา ซึ่งไม่ใช่สิ่งที่ตั้งใจ

ใช้ robots.txt เมื่อ

  • มีหน้าที่สร้างขึ้นไม่รู้จบ เช่น หน้าค้นหาภายในที่เปลี่ยนตามตัวกรอง
  • มีบอทบางตัวที่ไม่อยากให้เข้า เช่น บอทเก็บข้อมูลไปเทรน AI บางตัว (ดูเครื่องมือตรวจ AI crawler ท้ายบท)

ถ้าต้องการให้หน้าไม่ขึ้นผลค้นหา ให้ใช้ noindex ในหัวข้อถัดไป

2.3 noindex: ต้องให้ Google อ่านเห็นก่อน

ใส่ได้สองแบบ

<meta name="robots" content="noindex">

หรือส่ง HTTP header X-Robots-Tag: noindex ซึ่งใช้กับหน้า HTML ได้เหมือนกัน และเป็นวิธีเดียวสำหรับไฟล์ที่ไม่มี <head> Google เขียนว่าใช้กับไฟล์ที่ไม่ใช่ HTML ได้ เช่น PDF วิดีโอ และรูปภาพ

กับดักที่ Google เตือนไว้ชัด: หน้าที่ใส่ noindex ต้องไม่ถูกห้ามใน robots.txt ไม่อย่างนั้น Google จะไม่เคยเห็นคำว่า noindex เลย และหน้ายังอาจขึ้นผลค้นหาต่อไป การใส่ทั้งสองอย่าง “ให้ชัวร์” จึงทำให้ noindex ใช้ไม่ได้

อีกเรื่องที่ต้องรู้คือ noindex ไม่มีผลทันที หน้าที่ไม่สำคัญอาจรอเป็นเดือนกว่า Google จะกลับมาอ่านอีกรอบ ขอให้ Google อ่านใหม่ได้ด้วย URL Inspection ถ้าต้องให้หน้าหายจากผลค้นหาเร็ว ๆ Search Console มีเครื่องมือนำออก (Removals) แยกต่างหาก ซึ่งซ่อนหน้าได้ราวหกเดือน นานพอให้ noindex มีผล แต่ใช้แทน noindex ไม่ได้

2.4 canonical: บอกว่าหน้าไหนคือตัวจริง

หน้าเดียวกันมักเปิดได้หลาย URL เช่น มีและไม่มี / ท้าย, มีพารามิเตอร์ติดตามแคมเปญ ?utm_source=line, หรือเปิดได้ทั้ง http และ https Google จะจับกลุ่ม URL พวกนี้แล้วเลือกตัวแทนหนึ่งตัว เราช่วยบอกได้ด้วยสัญญาณเหล่านี้ เรียงจากแรงที่สุด

สัญญาณความแรงตามที่ Google บอก
redirect ไป URL หลักแรง
<link rel="canonical" href="…">แรง
ใส่ URL หลักใน sitemapอ่อน

สัญญาณพวกนี้ ใช้ร่วมกันแล้วแรงขึ้น และเป็นแค่ คำใบ้ Google มีสิทธิ์เลือกหน้าอื่นถ้าหลักฐานชี้ไปทางนั้น

สิ่งที่ Google บอกให้หลีกเลี่ยง

  • อย่าใช้ robots.txt เพื่อเลือก canonical
  • อย่าให้แต่ละวิธีชี้ไปคนละ URL เช่น canonical บอกว่าหน้า A แต่ sitemap ใส่หน้า B
  • ไม่แนะนำให้ใช้ noindex เพื่อเลือกว่าหน้าไหนเป็นหลักภายในเว็บเดียวกัน

เรื่องที่ทำให้หลายคนสบายใจขึ้น: Google บอกว่าเนื้อหาของเราที่เปิดได้หลาย URL “ไม่มีประสิทธิภาพ แต่ไม่ใช่เรื่องที่จะทำให้โดน manual action (การลงโทษด้วยมือ)” และเขียนต่อว่าการลอกเนื้อหาของคนอื่น “เป็นอีกเรื่องหนึ่ง” สำหรับ URL ในเว็บเราเอง canonical จึงเป็นเรื่องความเรียบร้อย ไม่ใช่เรื่องหนีบทลงโทษ

2.5 sitemap: รายการหน้าที่อยากให้ Google รู้จัก

sitemap คือไฟล์ XML ที่ลิสต์ URL ของเว็บ กฎหลักจาก Google และ sitemaps.org

  • ไฟล์หนึ่งไม่เกิน 50,000 URL และไม่เกิน 50MB ก่อนบีบอัด ถ้าเกินให้แบ่งไฟล์แล้วรวมด้วย sitemap index
  • URL ต้องเป็นแบบเต็ม ขึ้นต้นด้วย https:// ตามกฎของ sitemaps.org ต้องอยู่โฮสต์เดียวกับไฟล์ แต่ Google รับ sitemap ของเว็บอื่นได้ถ้ายืนยันทุกเว็บใน Search Console แล้ว หรือ robots.txt ของเว็บนั้นชี้มาที่ sitemap นี้
  • ใส่เฉพาะ URL ที่อยากให้ขึ้นผลค้นหา คือ URL ที่เป็น canonical ไม่ใส่หน้าที่ติด noindex หรือหน้าที่ redirect ไปที่อื่น
  • Google ไม่ใช้ <priority> และ <changefreq>
  • <lastmod> ถูกใช้เฉพาะเมื่อ “ถูกต้องสม่ำเสมอและตรวจสอบได้” ถ้าทุก URL มีวันที่เดียวกันทุกครั้งที่สร้างไฟล์ Google อาจไม่สนใจค่านี้

ข้อสุดท้ายเป็นเรื่องที่ KoishiAI ยังค้างอยู่เอง sitemap ของเราตอนนี้ยังไม่มี lastmod เลย ซึ่งเครื่องมือตรวจ sitemap ของเราเองก็เตือนไว้ ทางแก้ที่ถูกคือใส่วันที่แก้บทความจริงของแต่ละหน้า ไม่ใช่เวลาที่สร้างไฟล์

sitemap ที่ไม่ได้ส่งผ่าน Search Console จะครอบคลุมเฉพาะ URL ที่อยู่ในโฟลเดอร์ของไฟล์นั้น ถ้าวางไฟล์ที่ /blog/sitemap.xml ก็จะใช้กับหน้าใต้ /blog/ เท่านั้น

2.6 ลิงก์ภายใน: ทางเดินของ Googlebot

Google ใช้ลิงก์ทั้งเพื่อหาหน้าใหม่และเพื่อเข้าใจว่าหน้าเกี่ยวกับอะไร ลิงก์ที่ Google เดินตามได้แน่นอนคือแท็ก <a> ที่มี href

แบบนี้ Google ตามได้แบบนี้ตามได้ไม่แน่นอน
<a href="/th/tools/sitemap-check"><span href="…">
<a href="https://example.com/"><a onclick="goTo('…')"> ที่ไม่มี href
<a routerLink="…">

ข้อความลิงก์ควรบอกว่าปลายทางคืออะไร เช่น “เครื่องมือตรวจ sitemap” ดีกว่า “คลิกที่นี่”

บทเรียนจาก KoishiAI: <details> ซ่อนแค่หน้าตา ไม่ได้ซ่อนลิงก์

เว็บเรามีหน้ารวมแท็กจำนวนมาก แท็กที่มีบทความน้อยเราตั้งเป็น noindex แต่ในหน้าอื่นยังมีลิงก์ไปหาแท็กพวกนั้นอยู่ ซ่อนไว้ในกล่อง <details> ที่พับไว้ เราคิดว่าพับแล้วไม่มีใครเห็น แต่ การพับซ่อนแค่สิ่งที่ตาเห็น ลิงก์ยังอยู่ใน HTML ครบ Googlebot จึงเดินตามไปหน้าที่เราบอกเองว่าไม่ต้องเก็บ

เอกสาร crawl budget ของ Google เขียนไว้ว่าหน้า noindex ยังถูกดึงไปอ่านก่อนแล้วค่อยทิ้ง ซึ่ง “เปลืองเวลาการเก็บหน้า” เอกสารนั้นเขียนสำหรับเว็บใหญ่ เราจึงไม่อ้างว่าลิงก์พวกนี้คือสิ่งที่ถ่วงเว็บเล็กของเรา แต่การพา Google ไปหน้าที่เราบอกเองว่าไม่ต้องเก็บ ไม่สมเหตุสมผลไม่ว่าเว็บจะขนาดไหน เราจึงเก็บกวาดโดยเอาลิงก์ไปหน้า noindex ออกจากทุกหน้า และเขียนเทสต์กันไม่ให้กลับมาอีก

วิธีตรวจเว็บตัวเองแบบเดียวกัน: ดูต้นฉบับ HTML ของหน้า ไม่ใช่ดูหน้าจอ ลิงก์ที่มองไม่เห็นบนจอยังนับทั้งหมด

2.7 crawl budget: เว็บเล็กส่วนใหญ่ไม่ต้องห่วง

เอกสาร crawl budget ของ Google เขียนสำหรับเว็บที่มีหน้าไม่ซ้ำกันเกิน 1 ล้านหน้าและเปลี่ยนทุกสัปดาห์ เกิน 10,000 หน้าและเปลี่ยนทุกวัน หรือมี URL จำนวนมากค้างสถานะ “Discovered - currently not indexed” ถ้าหน้าใหม่ของเว็บคุณถูกเก็บภายในวันที่เผยแพร่ Google บอกว่าไม่ต้องอ่านเอกสารนั้นเลย

สำหรับเว็บเล็ก crawl budget ไม่ใช่ปัญหา เรื่องที่ควรทำคือความเรียบร้อยพื้นฐาน

  • ไม่ลิงก์ไปหน้า noindex หรือหน้าซ้ำ
  • หน้าที่ไม่มีจริงให้ส่งรหัส 404 จริง ไม่ใช่หน้า “ไม่พบ” ที่ส่งรหัส 200 (soft 404) ซึ่ง Google บอกว่าจะถูกเก็บซ้ำไปเรื่อย ๆ
  • URL ที่ย้ายแล้วให้ redirect ไปหน้าใหม่ แล้วแก้ลิงก์ภายในให้ชี้ปลายทางตรง ๆ

2.8 ลงมือหลังอ่านบทนี้

  • เปิด robots.txt ของเว็บ ถ้ามีบรรทัดที่ใช้ซ่อนหน้า ให้เปลี่ยนเป็น noindex แล้วเอาบรรทัดนั้นออก
  • ตรวจว่าหน้าที่ใส่ noindex ไม่ได้ถูกห้ามใน robots.txt
  • ตรวจ sitemap ด้วยเครื่องมือด้านล่าง ดูว่ามี URL ซ้ำ URL ไม่เต็ม หรือ lastmod เป็นวันเดียวกันหมดหรือเปล่า
  • ค้นในต้นฉบับ HTML ว่ามีลิงก์ไปหน้า noindex หรือหน้าที่ redirect หรือไม่

เครื่องมือที่เกี่ยวข้อง

แหล่งอ้างอิง