SEO
robots.txt คืออะไร?
robots.txt เป็นไฟล์ข้อความที่เก็บในโฟลเดอร์หลัก (Root) ของเว็บไซต์ สำหรับบอกให้ Search Engine Bot เช่น Google Bot, Bing Bot และ Bot ตัวอื่น ๆ ว่า "หน้าไหนที่คุณสามารถเข้าถึงได้ และหน้าไหนที่คุณห้ามเข้า" ตัวอย่างเช่น คุณอาจต้องการ:
- ซ่อนหน้า Admin หรือหน้า Staging ที่ไม่ต้องการให้ Google Index
- ปิดกั้นการเข้าถึง XML Sitemap สำหรับ Bot ที่ไม่เป็นประโยชน์
- จำกัดการ Crawl ของ Search Engine Bot เพื่อประหยัด Server Resources
- ระบุตำแหน่งของ Sitemap ให้ Search Engine รู้
ทำไม robots.txt จึงสำคัญสำหรับ SEO?
หากไม่มี robots.txt Search Engine Bot จะพยายาม Crawl ทุกหน้าของเว็บไซต์ ปัญหาที่เกิดได้มีดังนี้:
- Crawl Budget เสียไป — Server ของ Google มี Crawl Budget จำกัด (คือจำนวนครั้งที่ Google Bot สามารถเข้ามา Crawl ได้ต่อวัน) หากปล่อยให้ Bot Crawl หน้าที่ไม่สำคัญ เวลา Crawl นั้นจะเสียไปกับหน้าที่ไม่ต้องการ
- หน้า Private ปรากฏใน Search — ถ้าไม่มี robots.txt หน้า Admin, Login, หรือ Staging อาจปรากฏใน Google Search Results ซึ่งไม่ต้องการ
- ประสิทธิภาพเว็บชั่วลง — การ Crawl บ่อยเกินไป อาจใช้ Server Resources ซึ่งส่งผลกระทบต่อความเร็วเว็บไซต์
ที่ตั้งของไฟล์ robots.txt
robots.txt ต้องอยู่ในโฟลเดอร์ Root ของเว็บไซต์ตัวอย่างเช่น:
- https://yourdomain.com/robots.txt ✓ ถูก
- https://yourdomain.com/subfolder/robots.txt ✗ ผิด (ต้องอยู่ root เท่านั้น)
- https://yourdomain.com/admin/robots.txt ✗ ผิด
หลังจากสร้างไฟล์ robots.txt แล้ว ให้อัพโหลดไปยัง public_html ของ Hosting ของคุณ
วิธีเขียน robots.txt ที่ถูกต้อง
robots.txt ใช้รูปแบบที่ง่ายมาก บรรทัดละ Directive (คำสั่ง) เขียนแบบ Key: Value ตัวอย่าง:
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /public/
Sitemap: https://yourdomain.com/sitemap.xml
ความหมายของ Directive ต่าง ๆ
- User-agent: [Bot Name] — ระบุ Bot ที่ Directive นี้ใช้กับ ใช้ * (Asterisk) หมายถึง Bot ทั้งหมด หรือระบุเฉพาะชื่อ Bot เช่น `Googlebot`, `Bingbot`
- Disallow: [Path] — บอก Bot ว่าห้ามเข้า Path นี้ เช่น `Disallow: /admin/` หมายถึง ห้ามเข้า /admin/ และโฟลเดอร์ที่อยู่ข้างใน
- Allow: [Path] — อนุญาตให้เข้า Path นี้ (ใช้เมื่อมี Disallow ที่กว้าง แล้วต้องการอนุญาตหน้าเฉพาะบางหน้า)
- Sitemap: [URL] — บอกให้ Search Engine รู้ว่าไฟล์ Sitemap XML อยู่ที่ไหน
ตัวอย่างการใช้งาน robots.txt
ตัวอย่างที่ 1: ปิดกั้นโฟลเดอร์ Admin และ Private
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /wp-admin/
Sitemap: https://yourdomain.com/sitemap.xml
ความหมาย: ปิดกั้นทุก Bot ให้เข้า /admin/, /private/, และ /wp-admin/ (สำหรับ WordPress) แต่อนุญาตให้เข้าหน้าอื่น ๆ ได้
ตัวอย่างที่ 2: ปิดกั้นทั้งหมด ยกเว้นหน้าที่ต้องการ
User-agent: *
Disallow: /
Allow: /public/
Allow: /blog/
Sitemap: https://yourdomain.com/sitemap.xml
ความหมาย: ปิดกั้นทั้งหมด (Disallow: /) แต่อนุญาตให้เข้า /public/ และ /blog/ เท่านั้น (ใช้สำหรับเว็บที่ส่วนใหญ่เป็น Private)
ตัวอย่างที่ 3: ตั้งค่าต่างกันสำหรับ Bot ต่างชนิด
User-agent: Googlebot
Disallow: /staging/
User-agent: Bingbot
Disallow: /temp/
User-agent: *
Disallow: /admin/
Sitemap: https://yourdomain.com/sitemap.xml
ความหมาย: Google Bot ห้ามเข้า /staging/, Bing Bot ห้ามเข้า /temp/, Bot อื่น ๆ ทั้งหมด ห้ามเข้า /admin/
ตัวอย่างที่ 4: ตั้ง Crawl Delay (บอกให้ Bot ช้า)
User-agent: *
Crawl-delay: 1
Request-rate: 1/10
Disallow: /admin/
Sitemap: https://yourdomain.com/sitemap.xml
ความหมาย: บอกให้ Bot รอ 1 วินาที ระหว่าง Request แต่ละครั้ง (Crawl-delay: 1) และ Request rate เป็น 1 Request ต่อ 10 วินาที (เพื่อไม่ให้ใช้ Server Resource มากเกินไป)
ตรวจสอบว่า robots.txt ทำงานถูกต้อง
หลังจากสร้างและอัพโหลด robots.txt แล้ว ให้ตรวจสอบด้วยวิธีต่อไปนี้:
# 1. เปิดเบราว์เซอร์และเข้าไป robots.txt
https://yourdomain.com/robots.txt
# 2. ตรวจสอบว่าไฟล์มีอยู่และแสดงข้อมูลถูกต้อง
# 3. ใช้ Google Search Console ตรวจสอบ
# เข้าไป Google Search Console → Settings → Crawl Stats
# Google จะแสดง Crawl Activity ที่เป็นไปตามตัวเลขใน robots.txt
# 4. ใช้ Google robots.txt Tester
# https://www.google.com/webmasters/tools/robots-testing-tool
# ใช้เครื่องมือนี้ทดสอบ URL ของคุณดูว่าเข้าถึงได้หรือไม่ตาม robots.txt
# 5. ตรวจสอบ Syntax ความถูกต้อง
# https://www.seobyweb.com/robots.txt-checker
# หรือเครื่องมือออนไลน์เช่นนี้ ช่วยตรวจสอบว่า Syntax ถูกต้องหรือไม่
แก้ปัญหาที่พบบ่อย
Error: "404 Not Found" เมื่อเข้า robots.txt
แสดงว่าไฟล์ robots.txt ยังไม่ได้สร้างหรือไม่ได้อัพโหลดไป public_html
- ตรวจสอบว่าไฟล์ robots.txt มีอยู่ในโฟลเดอร์โลคัลของคุณหรือไม่
- อัพโหลดไฟล์ robots.txt ไปยัง public_html ด้วย FTP หรือ cPanel File Manager
- รอสักครู่ (ปกติ 1-2 นาที) แล้วลองเข้า https://yourdomain.com/robots.txt อีกครั้ง
Error: "Google ยังคง Crawl หน้าที่ฉันห้ามใน robots.txt"
ถึงแม้ว่า robots.txt บอก Disallow แต่ Google ก็อาจ Crawl หน้านั้นอยู่ ความเป็นไปได้:
- robots.txt ใหม่ยังไม่ถูก Index — Google ใช้เวลาสัปดาห์ต่างๆ ในการอ่าน robots.txt ใหม่ ถ้า Update เพิ่งๆ นี้ รอไป
- หน้านั้นมี Backlink จากเว็บอื่น — ถ้าหน้าที่ Disallow มี Backlink จากเว็บอื่น Google อาจยังคง Index มัน ให้ใช้ Google Search Console → Removals เพื่อขอให้ลบออก
- robots.txt Syntax ผิด — ตรวจสอบว่า robots.txt เขียนตามรูปแบบถูกต้องหรือไม่ ตัวอักษร User-agent, Disallow ต้องเป็น Capital letter
Error: "หน้าที่ควรขึ้น Google หาย" หรือหน้า Public หายจาก Index
อาจเป็นเพราะการตั้งค่า robots.txt ผิดและบล็อกหน้าสำคัญ
- ตรวจสอบ Disallow ว่าเขียนถูกต้องหรือไม่ อาจโดยไม่ตั้งใจบล็อก Path สำคัญ
- ตรวจสอบ Allow ว่าระบุหน้าที่ต้องการให้ Crawl ไว้แล้วหรือไม่
- หากลบ Disallow ส่วนนั้นออก รอให้ Google Crawl ใหม่ (ปกติ 1-2 สัปดาห์) และส่ง Sitemaps ใหม่ใน Google Search Console
Error: "Parameter หรือ Query String ไม่ได้บล็อก"
robots.txt ไม่สามารถบล็อก URL ด้วย Query String ได้ เช่น `https://yourdomain.com/page?id=123` ถ้าต้องการบล็อก URL แบบนี้ต้องใช้วิธีอื่น
วิธีแก้: ใช้ Google Search Console Parameters Setting หรือใช้ Meta Robots tag เพิ่มเติม ใน HTML header
Error: "หลายโดเมน (Domain) ใช้ robots.txt เดียว" ส่งผลการค้นหาสับสน
ถ้าคุณจัดการหลายโดเมน แต่ละโดเมนต้องมี robots.txt ของตัวเอง
วิธีแก้: สร้าง robots.txt ต่างกันสำหรับแต่ละโดเมน โดยแต่ละไฟล์ Sitemap ต้องชี้ไปยัง Sitemap ของโดเมนนั้น
คำถามที่พบบ่อย
Q: ถ้าเว็บไซต์ไม่มี robots.txt จะเกิดอะไรขึ้น?
A: ถ้าไม่มี robots.txt Search Engine Bot ก็ยังคง Crawl เว็บไซต์ได้ตามปกติ แต่ Bot จะ Crawl ทั้งหน้าที่สำคัญและไม่สำคัญ ซึ่งอาจทำให้เสียเวลา Crawl Budget และปล่อยให้หน้า Private ปรากฏใน Search ดังนั้น แนะนำให้สร้าง robots.txt แม้แต่ไฟล์ขั้นต่ำเพื่อควบคุม Bot
Q: robots.txt แบบขั้นต่ำที่ดีที่สุดคืออะไร?
A: สำหรับเว็บไซต์ส่วนใหญ่ robots.txt ที่ดีคือ:
User-agent: *
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /private/
Sitemap: https://yourdomain.com/sitemap.xml
บรรทัดนี้บล็อก Admin Pages และเบิก Google รู้ว่า Sitemap อยู่ที่ไหน
Q: robots.txt ป้องกัน Hacker ได้หรือไม่?
A: ไม่ robots.txt มีไว้สำหรับ Bot และ Crawler ที่เคารพ robots.txt เท่านั้น Hacker ไม่มีหน้าที่ต้องเคารพ robots.txt เพราะฉะนั้น robots.txt ไม่สามารถป้องกัน Hack ได้ เพื่อความปลอดภัยจริง ต้องใช้ Password, Authentication, firewall และมาตรการ Security อื่น ๆ แทน