เขียนไฟล์ robots.txt ให้ถูกต้อง
คำตอบสั้น ๆ: เขียนไฟล์ robots.txt ให้ถูกต้องตามข้อกำหนดของ Google พร้อมตัวอย่างสำหรับ WordPress และ WooCommerce และวิธีตรวจผลใน Google Search Console
คู่มือนี้อธิบาย robots ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
robots.txt เป็นไฟล์ข้อความธรรมดาที่วางไว้ที่รากของเว็บไซต์ เช่น https://www.example.com/robots.txt ใช้บอก Crawler ของ Search Engine ว่าส่วนใดของเว็บ ไม่ต้องเข้ามารวบรวมข้อมูล (Crawl) ช่วยลดภาระเซิร์ฟเวอร์จากการ Crawl หน้าที่ไม่มีประโยชน์ เช่น หน้าค้นหาภายใน หน้าตะกร้าสินค้า หรือ URL ที่มีพารามิเตอร์ซ้ำซ้อน
สิ่งสำคัญที่ต้องเข้าใจก่อนเขียนคือ robots.txt ควบคุมการ Crawl ไม่ใช่การ Index หน้าที่ถูก Disallow อาจยังปรากฏในผลการค้นหาได้ถ้ามีลิงก์จากที่อื่น และ robots.txt ไม่ใช่ระบบความปลอดภัย ทุกคนเปิดอ่านไฟล์นี้ได้ ห้ามใช้เพื่อซ่อนข้อมูลลับ การเขียนผิดเพียงบรรทัดเดียวอาจทำให้ทั้งเว็บหายจาก Google ได้ จึงควรเขียนอย่างระมัดระวัง
สิ่งที่ต้องเตรียม
- สิทธิ์แก้ไขไฟล์ในโฟลเดอร์หลักของเว็บ (Document root) ผ่าน File Manager, FTP หรือ SSH หรือสิทธิ์ผู้ดูแล WordPress หากใช้ปลั๊กอิน SEO
- Property ใน Google Search Console สำหรับตรวจผล ดู ยืนยันความเป็นเจ้าของเว็บไซต์บน Google Search Console
- สำรองไฟล์ robots.txt เดิมก่อนแก้ไข
กฎพื้นฐานของไฟล์
- ชื่อไฟล์ต้องเป็น
robots.txt ตัวพิมพ์เล็กทั้งหมด และอยู่ที่รากของ Host เท่านั้น ไฟล์ในโฟลเดอร์ย่อยไม่มีผล
- ไฟล์หนึ่งใช้กับ Host และ Protocol เดียว
https://example.com, https://www.example.com และ https://shop.example.com ต่างก็ต้องมีไฟล์ของตัวเอง
- บันทึกเป็นข้อความ UTF-8 Google อ่านได้สูงสุด 500 KiB
- พาธใน
Allow และ Disallow แยกตัวพิมพ์ใหญ่เล็ก /Admin/ กับ /admin/ เป็นคนละพาธ
คำสั่งที่ใช้
| คำสั่ง | ความหมาย |
User-agent | ระบุ Crawler ที่กฎกลุ่มนั้นใช้ด้วย * หมายถึงทุกตัว |
Disallow | พาธที่ไม่ต้องการให้ Crawl ค่าว่างหมายถึงอนุญาตทั้งหมด |
Allow | อนุญาตพาธย่อยภายในส่วนที่ถูก Disallow |
Sitemap | URL เต็มของ Sitemap ใส่ได้หลายบรรทัด ไม่ขึ้นกับกลุ่ม User-agent |
สัญลักษณ์พิเศษที่ Google และ Bing รองรับ ได้แก่ * แทนตัวอักษรใด ๆ กี่ตัวก็ได้ และ $ หมายถึงจุดสิ้นสุด URL เมื่อ Allow และ Disallow ขัดกัน Google จะใช้กฎที่พาธยาวกว่า (เฉพาะเจาะจงกว่า) และถ้ายาวเท่ากันจะใช้ Allow
Crawler หนึ่งตัวจะทำตามกลุ่ม User-agent ที่ตรงกับชื่อตัวเองมากที่สุดเพียงกลุ่มเดียว ถ้าเขียนกลุ่ม User-agent: Googlebot แยกไว้ Googlebot จะไม่อ่านกฎในกลุ่ม User-agent: * อีก จึงต้องใส่กฎที่ต้องการให้ครบในกลุ่มนั้น
ขั้นตอนที่ 1: ดูไฟล์ปัจจุบัน
เปิด https://www.example.com/robots.txt ในเบราว์เซอร์ หรือใช้คำสั่ง
curl -i https://www.example.com/robots.txt
ผลที่ถูกต้องคือสถานะ HTTP/2 200 (หรือ HTTP/1.1 200 OK) และ content-type: text/plain ถ้าได้ 404 แปลว่าไม่มีไฟล์ Google จะถือว่าอนุญาตให้ Crawl ทั้งหมด ซึ่งไม่ผิด แต่ถ้าได้ 5xx ต่อเนื่อง Google อาจหยุด Crawl ทั้งเว็บชั่วคราว ต้องแก้ไขทันที
ขั้นตอนที่ 2: เขียนไฟล์
ตัวอย่างสำหรับ WordPress
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Sitemap: https://www.example.com/sitemap_index.xml
ไม่ควร Disallow /wp-content/ หรือ /wp-includes/ เพราะมีไฟล์ CSS, JavaScript และรูปภาพที่ Google ต้องใช้เพื่อแสดงผลหน้าเว็บให้ถูกต้อง ถ้าไม่ได้ใช้ Yoast หรือ Rank Math ให้เปลี่ยน Sitemap เป็น wp-sitemap.xml
ตัวอย่างสำหรับร้านค้า WooCommerce
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /*?add-to-cart=
Disallow: /*?orderby=
Sitemap: https://www.example.com/sitemap_index.xml
ปรับพาธ /cart/, /checkout/ และ /my-account/ ให้ตรงกับ Slug ของหน้าจริง ถ้าตั้งเป็นภาษาไทยหรือชื่ออื่น
ตัวอย่างสำหรับเว็บทดสอบ (Staging)
User-agent: *
Disallow: /
ใช้กับเว็บทดสอบเท่านั้น และต้องไม่นำไฟล์นี้ขึ้นเว็บจริงเด็ดขาด แต่การป้องกันเว็บทดสอบที่ดีกว่าคือการตั้งรหัสผ่าน ดู ตั้งรหัสผ่านป้องกันโฟลเดอร์บน Plesk
ขั้นตอนที่ 3: นำไฟล์ขึ้นเว็บ
WordPress: WordPress สร้าง robots.txt แบบเสมือน (Virtual) ให้อัตโนมัติเมื่อไม่มีไฟล์จริง ปลั๊กอิน SEO มักมีหน้าแก้ไขให้ เช่น Yoast SEO ที่ Yoast SEO > Tools > File editor และ Rank Math ที่ Rank Math > General Settings > Edit robots.txt ถ้ามีไฟล์ robots.txt จริงอยู่ในโฟลเดอร์หลักของเว็บ ไฟล์จริงจะถูกใช้แทน และการแก้ไขในปลั๊กอินจะไม่มีผล
เว็บทั่วไป: สร้างไฟล์ robots.txt ด้วยโปรแกรมแก้ไขข้อความ แล้วอัปโหลดไปที่ Document root ผ่าน File Manager หรือ SFTP บน Linux Server สามารถแก้ไขโดยตรงได้ เช่น
sudo cp /var/www/example.com/robots.txt /var/www/example.com/robots.txt.bak
sudo nano /var/www/example.com/robots.txt
นอกจากนี้ใน WordPress ให้ตรวจที่ Settings > Reading ว่าไม่ได้ติ๊ก Discourage search engines from indexing this site บนเว็บจริง ตัวเลือกนี้มักถูกเปิดไว้ตอนพัฒนาเว็บแล้วลืมปิด
ตรวจสอบผลลัพธ์
- เปิด
/robots.txt ด้วยเบราว์เซอร์ ต้องเห็นเนื้อหาใหม่ ถ้ายังเห็นของเดิม ให้ล้าง Cache ของเว็บและ CDN
- ใน Google Search Console ไปที่ Settings แล้วเปิดรายงาน robots.txt จะเห็นไฟล์ที่ Google ดึงไปล่าสุด สถานะ และคำเตือนหากมีบรรทัดที่อ่านไม่ได้ สามารถขอให้ Google ดึงไฟล์ใหม่ได้จากเมนูของรายงานนี้
- ใช้ URL Inspection ใน Search Console ตรวจหน้าสำคัญ เช่น หน้าแรกและหน้าสินค้า ว่าไม่ขึ้น Blocked by robots.txt
ปัญหาที่พบบ่อย
ใช้ robots.txt เพื่อเอาหน้าออกจาก Google แต่หน้ายังอยู่
robots.txt ไม่ได้ลบหน้าออกจาก Index และ Google ไม่รองรับคำสั่ง Noindex ใน robots.txt ตั้งแต่ปี 2019 วิธีที่ถูกคือใส่ <meta name="robots" content="noindex"> ในหน้านั้น และ ต้องไม่ Disallow หน้านั้นใน robots.txt เพราะถ้า Google Crawl ไม่ได้ ก็จะไม่เห็นแท็ก noindex
ทั้งเว็บหายจากผลการค้นหาหลังขึ้นเว็บใหม่
สาเหตุที่พบบ่อยที่สุดคือไฟล์จากเว็บทดสอบที่มี Disallow: / ติดมา หรือยังเปิดตัวเลือก Discourage search engines ไว้ แก้ไขแล้วขอให้ Google ดึงไฟล์ใหม่ในรายงาน robots.txt
Crawl-delay ไม่มีผลกับ Google
Google ไม่รองรับคำสั่ง Crawl-delay (Bing รองรับ) หาก Googlebot ใช้ทรัพยากรเซิร์ฟเวอร์มากเกินไป ให้ตรวจสาเหตุจากการใช้ทรัพยากรของเซิร์ฟเวอร์ และดูแนวทางลดอัตราการ Crawl ในเอกสารของ Google
หน้าเว็บแสดงผลผิดใน URL Inspection
มักเกิดจากการ Disallow โฟลเดอร์ที่เก็บ CSS หรือ JavaScript ให้เอากฎนั้นออก
อ่านข้อกำหนดฉบับเต็มได้ที่เอกสารของ Google Introduction to robots.txt หากต้องการความช่วยเหลือในการแก้ไขไฟล์บนโฮสต์ ติดต่อทีมซัพพอร์ต THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
อ่านเพิ่มเติมเกี่ยวกับ robots