ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home เขียนไฟล์ robots.txt ให้ถูกต้อง

เขียนไฟล์ robots.txt ให้ถูกต้อง

robots.txt เป็นไฟล์ข้อความธรรมดาที่วางไว้ที่รากของเว็บไซต์ เช่น https://www.example.com/robots.txt ใช้บอก Crawler ของ Search Engine ว่าส่วนใดของเว็บ ไม่ต้องเข้ามารวบรวมข้อมูล (Crawl) ช่วยลดภาระเซิร์ฟเวอร์จากการ Crawl หน้าที่ไม่มีประโยชน์ เช่น หน้าค้นหาภายใน หน้าตะกร้าสินค้า หรือ URL ที่มีพารามิเตอร์ซ้ำซ้อน

สิ่งสำคัญที่ต้องเข้าใจก่อนเขียนคือ robots.txt ควบคุมการ Crawl ไม่ใช่การ Index หน้าที่ถูก Disallow อาจยังปรากฏในผลการค้นหาได้ถ้ามีลิงก์จากที่อื่น และ robots.txt ไม่ใช่ระบบความปลอดภัย ทุกคนเปิดอ่านไฟล์นี้ได้ ห้ามใช้เพื่อซ่อนข้อมูลลับ การเขียนผิดเพียงบรรทัดเดียวอาจทำให้ทั้งเว็บหายจาก Google ได้ จึงควรเขียนอย่างระมัดระวัง

สิ่งที่ต้องเตรียม

กฎพื้นฐานของไฟล์

  • ชื่อไฟล์ต้องเป็น 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
SitemapURL เต็มของ 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/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security