ตั้งค่า robots.txt: กฎ Allow / Disallow ข้อผิดพลาดที่พบบ่อย และวิธีทดสอบ
1. robots.txt ควบคุมอะไร และไม่ควบคุมอะไร
robots.txt เป็นไฟล์ข้อความล้วนที่วางไว้ในไดเรกทอรีรากของเว็บไซต์ บอก crawler ของเครื่องมือค้นหาว่าเส้นทางใดเข้ามาดึงข้อมูลได้ เส้นทางใดไม่ควรเข้ามา มันเป็นข้อตกลงแบบสุภาพบุรุษ crawler ที่ทำตามกฎ (Googlebot, Bingbot) จะปฏิบัติตาม ส่วน crawler ที่ไม่ทำตามกฎ (ตัวเก็บข้อมูลสแปม) ไม่ได้อ่านไฟล์นี้เลย
สิ่งที่ต้องเข้าใจให้ชัดที่สุด: robots.txt ควบคุมการดึงข้อมูล ไม่ใช่การจัดทำดัชนี สองเรื่องนี้มักถูกสับสนกัน ถ้าคุณ Disallow เส้นทางใด Googlebot จะไม่เข้ามาดึงหน้าเว็บภายใต้เส้นทางนั้น แต่ถ้ามีลิงก์ภายนอกชี้มาที่ URL เหล่านั้น Google ก็ยังรู้ว่า URL เหล่านี้มีอยู่ และจะแสดง URL นั้นในผลการค้นหา เพียงแต่ไม่มีชื่อเรื่อง ไม่มีคำอธิบาย ไม่มีเนื้อหาย่อ คือเป็นแค่ลิงก์เปล่า ๆ
| ความเข้าใจผิด | สถานการณ์จริง | ผลที่ตามมา |
|---|---|---|
| Disallow แล้วจะไม่ปรากฏใน SERP | URL ที่มีลิงก์ภายนอกยังปรากฏใน SERP | URL เปล่า ๆ ไม่มีชื่อเรื่องไม่มีคำอธิบาย |
| robots.txt บล็อกไม่ให้หน้าถูกจัดทำดัชนีได้ | ไม่ได้ ต้องใช้ noindex เพื่อบล็อกการจัดทำดัชนี | หน้าก็ยังปรากฏในผลการค้นหา |
| robots.txt บล็อกไม่ให้คู่แข่งดูได้ | ใครก็เข้าถึง /robots.txt ได้ | กลับกลายเป็นข้อมูลสาธารณะ |
| กฎใน robots.txt ยิ่งมากยิ่งดี | เขียนผิดข้อเดียวทั้งเว็บหาย | การตั้งค่าต้องน้อยที่สุด |
| robots.txt ปกป้องหน้าที่ละเอียดอ่อนได้ | เป็นข้อตกลงแบบสุภาพบุรุษ crawler ที่ไม่ดีไม่ทำตาม | หน้าที่ละเอียดอ่อนต้องป้องกันด้วยรหัสผ่าน |
ความสัมพันธ์กับโมดูล SEO อื่น ๆ: robots.txt คือ Google SEO การตั้งค่าชั้นล่างสุดของโครงสร้างทางเทคนิค ใช้ร่วมกับ การปรับแต่ง XML Sitemap โดยประกาศตำแหน่ง Sitemap ไว้ท้าย robots.txt Google จะค้นพบ Sitemap ผ่าน robots.txt และ เช็กลิสต์ตรวจสอบ Technical SEO 的关系:robots.txt 是抓取象限的第 1 项检查。
2. ไวยากรณ์ของกฎ: User-agent, Disallow, Allow, Sitemap
ไวยากรณ์ของ robots.txt นั้นง่ายมาก มีคำสั่งหลักเพียง 4 คำสั่ง แต่ความง่ายไม่ได้หมายความว่าจะเขียนผิดไม่ได้ การวางเครื่องหมายสแลชผิดทิศหรือวางเครื่องหมายดอกจันผิดตำแหน่งล้วนเปลี่ยนความหมายของกฎได้
| คำสั่ง | ตัวอย่างการเขียน | หน้าที่ | ข้อควรระวัง |
|---|---|---|---|
| User-agent | User-agent: * | ระบุว่ากฎนี้มีผลกับบอทตัวใด | * หมายถึงบอททั้งหมด ต้องวางไว้บรรทัดแรกของกลุ่มกฎ |
| Disallow | Disallow: /admin/ | บล็อกการรวบรวมทุกหน้าใต้เส้นทางนี้ | สแลชปิดท้ายหมายถึงทั้งไดเรกทอรี |
| Allow | Allow: /admin/public/ | อนุญาตให้รวบรวมเส้นทางย่อยที่ถูก Disallow ระดับบนครอบอยู่ | ใช้สำหรับการครอบแบบละเอียด ไม่ใช่บอททุกตัวที่รองรับ |
| Sitemap | Sitemap: https://… | ประกาศตำแหน่ง Sitemap | วางไว้ท้ายไฟล์ แยกจากกลุ่มกฎ |
| ไวลด์การ์ด * | Disallow: /*?sort= | จับคู่ลำดับอักขระใดก็ได้ | ใช้บล็อก URL ที่มีพารามิเตอร์ |
| ปิดท้ายด้วย $ | Disallow: /test.html$ | จับคู่ URL ที่ลงท้ายด้วยสตริงนี้แบบแม่นยำ | ใช้บล็อกไฟล์เดียวอย่างแม่นยำ |
robots.txt ของเว็บ B2B มาตรฐานควรมีหน้าตาอย่างไร? ส่วนล่างคือการตั้งค่าหลัก เริ่มด้วย User-agent: * ใช้ Disallow บล็อกเส้นทางเชิงฟังก์ชันอย่าง admin, cart, checkout บล็อก URL การกรองและการจัดเรียงที่มีพารามิเตอร์ และประกาศตำแหน่ง Sitemap ไว้ท้ายไฟล์ หน้าสินค้า หน้าบทความ และหน้าหมวดหมู่ไม่ต้องเขียนกฎใดๆ เพราะค่าเริ่มต้นคืออนุญาตให้รวบรวมอยู่แล้ว
ตัวอย่างสถานการณ์ที่ 1: robots.txt ของเว็บอีคอมเมิร์ซ B2B แห่งหนึ่งเขียนว่า Disallow: /products/ โดยตั้งใจจะบล็อกเวอร์ชันแบ่งหน้าของหน้ารวมสินค้า แต่กลับบล็อกหน้าสินค้าทั้งหมด สามสัปดาห์ต่อมาเมื่อค้นหาแบรนด์บน Google กลับเห็นเพียงหน้าแรกและหน้าเกี่ยวกับเราใน SERP หน้าสินค้าทั้งหมดหายไป วิธีแก้: เปลี่ยนกฎเป็น Disallow: /products/?page= เพื่อบล็อกเฉพาะ URL ที่มีพารามิเตอร์แบ่งหน้า ไม่บล็อก /products/ เอง ตรวจสอบทีละข้อด้วยเครื่องมือทดสอบ robots ใน GSC ก่อนเผยแพร่
3. ข้อผิดพลาดร้ายแรง 2 ประการ: บล็อกทั้งเว็บและใช้เครื่องมือผิด
ข้อผิดพลาดของ robots.txt มีทั้งเล็กและใหญ่ แต่มีสองข้อที่ร้ายแรงมาก เพราะเมื่อทำแล้วทั้งเว็บไซต์จะหายไปจากผลการค้นหา
| ประเภทความผิด | อาการ | สัญญาณที่พบ | วิธีแก้ไข | ระยะเวลาฟื้นตัว |
|---|---|---|---|---|
| Disallow: / บล็อกทั้งเว็บ | Google ไม่รวบรวมหน้าใดเลย | รายงานความครอบคลุมใน GSC “รวบรวมแล้วแต่ยังไม่จัดทำดัชนี” พุ่งขึ้นทั้งเว็บ | ลบ Disallow: / ออก เก็บกฎที่จำเป็นไว้ | รวบรวมใหม่ภายใน 1 ถึง 3 วัน อันดับฟื้นตัวภายใน 1 ถึง 2 สัปดาห์ |
| ใช้ robots.txt บล็อกการจัดทำดัชนี | หน้าเว็บปรากฏใน SERP แต่ไม่มีชื่อเรื่อง | SERP แสดง URL เปล่า ไม่มีคำอธิบาย | เปลี่ยนไปใช้แท็ก noindex meta | หายไปจาก SERP ภายใน 2 ถึง 4 สัปดาห์ |
| เขียนเส้นทางในกฎผิด | สิ่งที่ควรบล็อกกลับไม่บล็อก สิ่งที่ควรอนุญาตกลับถูกบล็อก | สถิติการรวบรวมใน GSC ผิดปกติ | ตรวจสอบทีละข้อด้วยเครื่องมือทดสอบ | มีผลทันทีหลังแก้ไข |
| ลืมประกาศ Sitemap | Google ค้นพบ Sitemap ช้า | รายงาน Sitemap ใน GSC แสดง “ยังไม่ได้ส่ง” | เพิ่มคำสั่ง Sitemap: ท้าย robots.txt | จะพบในการรวบรวมครั้งถัดไป |
ความจริงที่สวนทางกับที่หลายคนคิดคือ คนส่วนใหญ่มักเข้าใจว่าถ้าไม่อยากให้หน้าใดหน้าหนึ่งปรากฏในผลการค้นหา ก็แค่เขียน Disallow ซึ่งเป็นความเข้าใจที่ผิด เพราะ Disallow แค่ห้ามไม่ให้ Google ดึงเนื้อหา แต่ Google ยังรู้ว่ามี URL นี้อยู่ จากลิงก์ภายนอก จาก Sitemap และจากประวัติการดึงข้อมูล ผลลัพธ์คือใน SERP จะโชว์ URL เปล่า ๆ ไม่มีชื่อเรื่อง ไม่มีคำอธิบาย ไม่มีตัวอย่างเนื้อหา ผู้ใช้กดเข้าไปก็เจอ 403 หรือหน้าว่าง ประสบการณ์แย่มาก แถมยังเสียโอกาสในการแสดงผลไปเปล่า ๆ
วิธีที่ถูกต้องคือ ถ้าไม่อยากให้หน้าใดถูกจัดทำดัชนี ให้ใส่ noindex meta tag ในหน้านั้น (<meta name=”robots” content=”noindex”>) และอย่าใช้ robots.txt บล็อกหน้านั้น เพราะ noindex จะทำงานได้ก็ต่อเมื่อ Google ดึงหน้าเว็บนั้นได้ ถ้าคุณทั้ง Disallow และใส่ noindex พร้อมกัน Google จะดึงหน้าไม่ได้ ก็อ่าน noindex tag ไม่เจอ ทั้งจัดทำดัชนีไม่ได้ ทั้งบล็อกก็ไม่ได้ เสียเปล่าทั้งสองทาง
ตัวอย่างที่สอง หน้าดาวน์โหลดใบเสนอราคาของเว็บ B2B (/pricing/quote-request/) ไม่อยากให้ Google จัดทำดัชนี เพราะเป็นหน้าแบบฟอร์ม ไม่จำเป็นต้องจัดอันดับคีย์เวิร์ด ทีมปฏิบัติการจึงเขียน Disallow: /pricing/quote-request/ ผลปรากฏว่าสามเดือนต่อมา URL นี้โผล่ใน SERP เมื่อค้นหา “quote request” ก็แสดง URL เปล่า ๆ ไม่มีชื่อเรื่อง เพราะมีเว็บไดเรกทอรีในอุตสาหกรรมหลายแห่งลิงก์มาที่หน้านี้ วิธีแก้คือ ลบบรรทัด Disallow ใน robots.txt ออก แล้วเปลี่ยนไปใส่ noindex meta tag ใน head ของหน้าแทน สองสัปดาห์ต่อมา URL นี้ก็หายไปจาก SERP
สี่ วิธีทดสอบและขั้นตอนการขึ้นระบบ
robots.txt มีผลทันทีที่แก้เสร็จ ไม่มีช่วงแคช Google มาครั้งถัดไปก็อ่านค่าใหม่ทันที นั่นหมายความว่าถ้าเขียนผิดจะเกิดปัญหาทันที ดังนั้นทุกครั้งที่แก้ต้องตรวจสอบ
| ขั้นตอน | การดำเนินการ | เครื่องมือ | เกณฑ์ผ่าน |
|---|---|---|---|
| 1. แก้ไขในเครื่อง | แก้ไขเนื้อหา robots.txt | โปรแกรมแก้ไขข้อความ | ไวยากรณ์ถูกต้อง ไม่มีช่องว่างเกิน |
| 2. ตรวจสอบผ่านเบราว์เซอร์ | เข้า https://โดเมน/robots.txt โดยตรง | เบราว์เซอร์ | ตอบกลับ 200 เนื้อหาเป็นข้อความล้วน |
| 3. ตรวจสอบด้วยเครื่องมือทดสอบใน GSC | ใส่ URL เป้าหมาย ตรวจสอบว่าได้รับอนุญาตหรือไม่ | เครื่องมือทดสอบ robots ใน GSC | หน้าสำคัญทั้งหมดเป็น Allow |
| 4. ตรวจสอบหลังขึ้นระบบ | ดูสถิติการดึงข้อมูลและรายงานความครอบคลุมใน GSC | GSC | ปริมาณการดึงข้อมูลไม่ลดลงผิดปกติ |
| 5. ตรวจซ้ำหลังปรับเว็บ | ตรวจสอบ robots.txt ใหม่ทุกครั้งหลังปรับเว็บ | GSC + เบราว์เซอร์ | พาธใหม่ไม่ถูกบล็อกโดยไม่ตั้งใจ |
เช็กลิสต์ ทุกครั้งที่แก้ robots.txt เสร็จ อย่างน้อยต้องทดสอบ 5 URL ต่อไปนี้ หน้าแรก (/) หน้ารายการสินค้า หน้ารายละเอียดสินค้า หน้าบทความบล็อก หน้าติดต่อเรา ยืนยันว่าทั้ง 5 หน้าเป็น Allow ถ้าหน้าใดแสดง Disallow แปลว่าเขียนกฎผิด พลาดที่พบบ่อยที่สุดคือ Disallow: / แล้วลืมเว้นวรรค หรือเขียน Disallow: /products แทนที่จะเป็น Disallow: /products/ แต่ที่จริงต้องการบล็อกโฟลเดอร์ย่อย /products/spec/
และ การปรับโครงสร้างเว็บและการเปลี่ยนโดเมน ความสัมพันธ์: เมื่อเปลี่ยนโดเมน robots.txt ของโดเมนเก่าห้าม Disallow ทั้งเว็บ เพราะ 301 redirect บนโดเมนเก่าต้องให้ Googlebot เข้ามา crawl จึงจะส่งต่อพลังอันดับได้ ถ้า robots.txt ของโดเมนเก่าเขียน Disallow: / Google จะไม่ crawl หน้าเก่า จึงอ่านคำสั่ง 301 ไม่ได้ การส่งต่อพลังอันดับก็ขาด วิธีที่ถูกคือให้ robots.txt ของโดเมนเก่ายังอนุญาตให้ crawl และบล็อกเฉพาะ path ที่เป็นฟังก์ชันอย่าง admin เท่านั้น
FAQ คำถามที่พบบ่อย
robots.txt กับ noindex ต่างกันอย่างไร?
Disallow: / หมายความว่าอะไร? ทำไมถึงอันตราย?
จะทดสอบได้อย่างไรว่า robots.txt เขียนถูก?
robots.txt ปกป้องหน้าที่ละเอียดอ่อนไม่ให้คู่แข่งเห็นได้ไหม?
หลังเปลี่ยนโดเมน ควรตั้ง robots.txt ของโดเมนเก่าอย่างไร?
คำสั่ง Allow ใช้ตอนไหน?
ทิ้งท้าย
robots.txt เป็นไฟล์เล็ก ๆ ที่สร้างเรื่องใหญ่ที่สุดใน SEO ได้ มีแค่ไม่กี่บรรทัด แต่เขียนสแลชผิดตัวเดียว ทั้งเว็บหายจากผลการค้นหา ต้องใช้เวลาหนึ่งถึงสองสัปดาห์กว่าจะกู้คืน จำหลักการสำคัญสองข้อไว้: robots.txt ควบคุมการดึงข้อมูล ไม่ได้ควบคุมการจัดทำดัชนี ถ้าอยากกันไม่ให้จัดทำดัชนีให้ใช้ noindex และหลังแก้ไขต้องตรวจสอบด้วยเครื่องมือทดสอบใน GSC ทุกครั้ง
ลงมือทำสามขั้นตอน: สัปดาห์นี้เปิดเบราว์เซอร์เข้าไปดู robots.txt ของคุณ เทียบกับการตั้งค่ามาตรฐานในบทความนี้ ว่ามี Disallow: / หรือกฎที่บล็อกเกินจำเป็นหรือไม่ สัปดาห์หน้าใช้เครื่องมือทดสอบ robots ใน GSC ตรวจทีละหน้าสำคัญว่า Allow ทั้งหมด แล้วเพิ่มประกาศ Sitemap ไว้ท้ายไฟล์ หลังจากนั้นทุกครั้งที่ปรับเว็บหรือเปลี่ยนโครงสร้าง URL ให้กลับไปตรวจ robots.txt ทันที เพื่อยืนยันว่าเส้นทางใหม่ไม่ได้ถูกบล็อกโดยไม่ตั้งใจ
ประโยคที่จำง่าย ๆ ไว้: robots.txt คือใบลาที่เขียนให้ Google ไม่ใช่กุญแจล็อกประตู เขียนเยอะเกินไปก็ปิดประตูขังตัวเองไว้ข้างนอก หน้าที่อยากซ่อนต้องใช้ noindex จะพึ่ง Disallow ไม่ได้
