AI บล็อกไซต์ของคุณ: 5 ข้อผิดพลาดร้ายแรงของ robots.txt ในการ Vibe Coding
คู่มือนี้ใช้ได้กับ Next.js App Router (
app/robots.ts), Astro (public/robots.txt) และตัวสร้างไซต์แบบคงที่ (SSG) ที่มีการใช้เครื่องมือ AI ในการสร้างหรือแทรกไฟล์เมตาแบบไดนามิก
การเกิดขึ้นของ «vibe-coding» ด้วยอาศัยผู้ช่วย AI ที่ก้าวหน้าอย่าง Cursor และ GitHub Copilot ช่วยให้นักพัฒนาสามารถส่งมอบฟีเจอร์ต่างๆ ได้ภายในเวลาไม่กี่นาที แต่ความเร็วนี้มาพร้อมกับต้นทุนที่มองไม่เห็น นั่นคือบั๊กในการตั้งค่าที่ «เงียบเชียบ» ซึ่งไม่แสดงข้อผิดพลาดในเทอร์มินัล แต่ทำลายลอจิกทางธุรกิจของคุณบนโปรดักชัน หนึ่งในความล้มเหลวที่ร้ายแรงที่สุดคือเมื่อ AI สร้างข้อผิดพลาดในไฟล์ robots.txt นักพัฒนาส่งมอบแอปพลิเคชัน ตัวสอบ UI เห็นว่าการบิลด์สำเร็จ และก้าวต่อไป—เพียงเพื่อให้รู้ตัวในอีกสองสัปดาห์ต่อมาว่าทราฟฟิกหายไปเป็นศูนย์ เพราะ Google ถูกบล็อกไม่ให้เข้ามาเก็บข้อมูลในไซต์ของคุณอย่างชัดเจน
มาดูวิธีสำคัญ 5 ประการที่ผู้ช่วย AI ทำลายการมองเห็นของคุณ และวิธีหยุดพวกมัน
การนำโค้ด Staging มาใช้ใน Production
Critical - SEO Crawl Block
เมื่อคุณขอให้ผู้ช่วย AI “สร้าง robots.txt สำหรับไซต์ Next.js ของฉัน” โมเดลภาษามักจะเลือกรูปแบบที่พบบ่อยที่สุดในฐานข้อมูลของมัน ซึ่งบ่อยครั้งรูปแบบนั้นคือไฟล์ต้นแบบ (boilerplate) ที่ใช้เพื่อซ่อนสภาพแวดล้อมสำหรับทดสอบ (staging) จากเครื่องมือค้นหา
Bad AI Code:
User-agent: *
Disallow: /
หากคุณยอมรับการเติมข้อความอัตโนมัตินี้โดยไม่ตรวจสอบ คุณเพิ่งสั่งให้ crawler ของเครื่องมือค้นหาทุกตัวบนอินเทอร์เน็ตลบโดเมนทั้งหมดของคุณออกจากดัชนีทันที LLM ไม่รู้ว่าคุณกำลังติดตั้งบนเซิร์ฟเวอร์โลคัลหรือคลัสเตอร์โปรดักชันระดับโลก มันเพียงแค่ส่งเอาต์พุตที่ดูเหมือนจะถูกต้องตามความน่าจะเป็น สำหรับ AI แล้ว โค้ดที่จำกัดการเข้าถึงนั้นดูเหมือนกับโค้ดมาตรฐานมาก
Fixed Code:
User-agent: *
Allow: /
WebValid Alignment: WebValid จะสแกนรูปแบบไฟล์ที่สร้างขึ้นและตรวจสอบกฎการปฏิเสธทั่วโลก (global deny rules) เพื่อแจ้งเตือนการตั้งค่านี้ทันทีก่อนที่มันจะไปถึงโปรดักชัน
การบล็อก Googlebot โดยไม่ได้ตั้งใจ
High - Traffic Collapse - OWASP WSTG-INFO-003
กรณีการใช้งาน AI ที่พบบ่อยในเดือนที่ผ่านมาคือการป้องกันบอท AI นักพัฒนามักจะสั่ง Cursor ว่า: “อัปเดตไฟล์ robots ของฉันเพื่อบล็อก OpenAI, Anthropic และเครื่องมือดูดข้อมูลเว็บอื่นๆ”
LLM ปฏิบัติตามอย่างกระตือรือร้น แต่ในความพยายามที่จะครอบคลุมทุกอย่าง มันมักจะ “หลอน” (hallucinate) สตริง User-Agent หรือทำให้กฎของขอบเขต (scoping rules) ผิดเพี้ยนไป
Bad AI Code:
User-agent: GPTBot
Disallow: /
User-agent: *
Disallow: /bot-traffic
Disallow: /*
ในตัวอย่างข้างต้น AI หลอนการบล็อกทั่วโลก (Disallow: /*) ในขณะที่พยายามจับบอทเฉพาะทาง ซึ่ง Disallow: /* มีค่าเท่ากับ Disallow: / — ทั้งคู่บล็อกทั้งไซต์สำหรับเอเจนต์ใดๆ ที่ตรงกับ User-agent: * รวมถึง Googlebot ด้วย
หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับวิธีที่ AI หลอนการทำงานในส่วนสำคัญ โปรดดูคู่มือของเราเกี่ยวกับ AI DOM Hallucinations
WebValid Alignment: WebValid จะทำการตรวจสอบไวยากรณ์ของ robots.txt โดยแยกกฎของบอทเฉพาะออกจากเครื่องหมายสแตนดาร์ด และช่วยให้มั่นใจได้ว่าการใช้เครื่องหมายดอกจัน (wildcards) จะไม่บล็อก crawler SEO ที่จำเป็น
การหลอน Regular Expressions
Medium - Ignored Directives - OWASP WSTG-INFO-003
หากคุณขอให้ AI บล็อก URL ที่มีพารามิเตอร์การค้นหาแบบไดนามิก (เช่น ?sort=price) มันมักจะกลับไปใช้ตรรกะมาตรฐานของนักพัฒนา นั่นคือ Regular Expressions (RegEx)
Bad AI Code:
User-agent: *
Disallow: /products/?[a-z]*=
ปัญหาคือ Google Search Central ระบุไว้อย่างชัดเจนว่ามาตรฐาน robots.txt ไม่ รองรับ regular expressions แบบเต็มรูปแบบ มันรองรับเพียง wildcard ง่ายๆ สองแบบเท่านั้น: เครื่องหมายดอกจัน (*) สำหรับอักขระที่ถูกต้อง 0 ตัวขึ้นไป และเครื่องหมายดอลลาร์ ($) เพื่อกำหนดจุดสิ้นสุดของสตริง URL
เนื่องจากบอทของ Google ไม่ได้ประมวลผล [a-z] พวกมันจะถือว่าเป็นสตริงธรรมดา URL แบบไดนามิกของคุณจะถูกเก็บข้อมูล ซึ่งจะไปลดงบประมาณการเก็บข้อมูล (crawl budget) ของคุณ และสร้างปัญหาเนื้อหาที่ซ้ำกันอย่างมหาศาล
Fixed Code:
User-agent: *
Disallow: /products/*?*sort=
ในที่นี้ * ก่อนเครื่องหมาย ? จะจับคู่กับเส้นทางใดๆ จนถึงเครื่องหมายคำถาม และ * หลัง sort= จะจับคู่กับค่าพารามิเตอร์ใดๆ Google จะมองว่า ? ในรูปแบบนี้เป็นอักขระตัวอักษร ซึ่งช่วยให้คุณบล็อกพารามิเตอร์การค้นหาได้อย่างแม่นยำ
เร่งความเร็วการตรวจสอบการตั้งค่าอัตโนมัติของคุณ เริ่มการตรวจสอบด้วย WebValid ทันที
การละเลยความขัดแย้งของลำดับความสำคัญตามความยาวเส้นทาง
High - Information Leakage - OWASP WSTG-INFO-003
เมื่อ AI พยายามจัดเรียงกฎ Allow และ Disallow ที่ซับซ้อน มันมักจะจัดกลุ่มพวกมันแบบสุ่มหรือตามตัวอักษรเสมอ
ตามกฎลำดับความสำคัญของ Google Search Central เส้นทางที่ตรงกันและยาวที่สุด จะได้รับความสำคัญสูงสุดเมื่อมีความขัดแย้งกัน แต่จะเกิดอะไรขึ้นถ้า AI หลอนสตริงการบล็อกที่สั้นกว่าและสตริงการอนุญาตที่ยาวกว่า?
Bad AI Code:
User-agent: Googlebot
Disallow: /admin/
Allow: /admin/dashboard/public-view/
Google จะให้ความสำคัญกับกฎ Allow สำหรับสิ่งใดก็ตามภายใต้ public-view/ เพราะมันมีความยาวมากกว่าในเชิงการคำนวณ โมเดล AI แทบจะไม่คำนวณจำนวนอักขระเมื่อส่งเอาต์พุตที่เป็นอาเรย์ พวกมันเพียงแค่เรียงข้อความต่อกัน สิ่งนี้มักส่งผลให้เกิดข้อมูลรั่วไหลโดยไม่ตั้งใจ (OWASP WSTG-INFO-003) ซึ่งเส้นทางที่ควรปลอดภัยกลับถูกทำดัชนีเพราะกฎ Allow เฉพาะที่ไปทับกฎการบล็อกทั่วไป
สำหรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับวิธีที่ความผิดพลาดทางโครงสร้างเล็กๆ เหล่านี้กลายเป็นการรั่วไหลของข้อมูลขนาดใหญ่ โปรดอ่านบทความของเราเกี่ยวกับ ช่องโหว่ Open Wire
WebValid Alignment: WebValid จะวิเคราะห์ลำดับความสำคัญของกฎโดยอัตโนมัติ โดยจะคำนวณความเหนือกว่าของความยาวสตริง เช่นเดียวกับที่ Googlebot ทำ และจะแจ้งเตือนเมื่อคำสั่ง Allow/Disallow มีความขัดแย้งในทางที่เป็นอันตราย
การทำ Directive ของ Sitemap หาย
Medium - Delayed Indexation
ไฟล์ robots ไม่ได้เป็นเพียงโล่ป้องกันเท่านั้น แต่มันยังเป็นแผนที่ด้วย คำสั่ง Sitemap: https://domain.com/sitemap.xml บอกบอทเก็บข้อมูลว่าสามารถหาเนื้อหาที่สำคัญที่สุดได้จากที่ไหน
เนื่องจากเรามักจะสั่งงาน AI ด้วยคำสั่ง “บล็อก” (“บล็อกเส้นทางนี้”, “หยุดบอท AI”) LLM จึงให้ความสำคัญกับ User-agent มากเกินไปจน “ลืม” คำสั่ง Sitemap ไปเลย ผลที่ได้คือไซต์ที่จำกัดการเข้าถึงแต่ไม่เคยชี้แนะ Google ให้ไปยังเนื้อหาไดนามิกใหม่ที่คุณเพิ่งส่งมอบ แม้ว่าจะไม่ใช่ภัยคุกคามต่อความปลอดภัย แต่สิ่งนี้จะทำให้การทำดัชนีสำหรับแอปพลิเคชัน Next.js App Router แบบไดนามิกช้าลงอย่างมาก
Fact-Check: Robots.txt AI Hallucinations
สิ่งนี้เกิดขึ้นจริงหรือเป็นเพียงทฤษฎี?
หลักฐาน:
- พบไฟล์
app/robots.tsที่สร้างโดย AI ซึ่งมีDisallow: /อยู่ในเมนแบรนช์อย่างแพร่หลายในที่หน้าสาธารณะ (public repositories) - ฟอรัม Google Search Console และชุมชน SEO บน Reddit มีกระทู้ “ทราฟฟิกตกลงเป็นศูนย์ข้ามคืน” มากมาย ซึ่งนักพัฒนายอมรับว่าคัดลอกไฟล์การตั้งค่ามาจากเครื่องมืออย่าง ChatGPT โดยไม่ได้ตรวจสอบ wildcard
- Google Search Central ยืนยันอย่างเป็นทางการว่า regex ที่ซับซ้อน (นอกเหนือจาก
*และ$) จะถูกละเลยหรือตีความผิด ซึ่งพิสูจน์ได้ว่าตรรกะ AI มาตรฐานล้มเหลวในรูปแบบข้อความการกำหนดเส้นทางแบบเก่านี้
ความเห็น: ในทางปฏิบัติ ข้อผิดพลาด SEO ที่ร้ายแรงที่สุดส่วนใหญ่มาจากนักพัฒนาที่ไว้วางใจรูปแบบของไฟล์รุ่นเก่าเพียงเพราะมัน “ดูเหมือนข้อความธรรมดา” แต่ robots.txt คือสัญญาการทำงานที่เข้มงวด และ AI ปฏิบัติต่อมันเหมือนกับร่างเนื้อหาทั่วไปเท่านั้น
การทำ QA อัตโนมัติด้วย WebValid
นี่คือวิธีที่ WebValid ตรวจจับสิ่งที่ AI หลอนได้อย่างเป็นระบบ:
| ฟีเจอร์ | ความสามารถของ WebValid |
|---|---|
| กฎการบล็อกทั่วโลก | ตรวจสอบรูปแบบข้อความเพื่อหา Disallow: / โดยไม่ได้ตั้งใจ |
| การรองรับไวยากรณ์ | ตรวจสอบขอบเขตไวยากรณ์เพื่อหา RegEx ที่ผิดกฎ |
| การจัดลำดับความสำคัญ | คำนวณความขัดแย้งของกฎโดยใช้ตรรกะความยาวของเส้นทาง |
| การค้นหา Sitemap | ตรวจสอบการมีอยู่และการเข้าถึงของ Sitemap: |
| การสแกนเนื้อหา | ประเมินเนื้อหาในบันเดิลคงที่โดยไม่ต้องรันสคริปต์ |
WebValid จะตรวจสอบไวยากรณ์และกฎการปฏิบัติตามข้อกำหนดของ Google เพื่อป้องกันการลดลงของงบประมาณการเก็บข้อมูลและความล้มเหลวของไวยากรณ์ อย่างไรก็ตาม มันไม่สามารถเดาลอจิกทางธุรกิจที่เป็นความลับของคุณได้—นั่นหมายความว่ามันจะไม่รู้ว่า
/dashboardควรเป็นแบบสาธารณะหรือไม่ นอกเสียจากว่าคุณจะตั้งค่าการควบคุมการเข้าถึงที่เหมาะสมในลอจิกเซิร์ฟเวอร์ของคุณ
เช็คลิสต์ Robots.txt ของคุณ
อย่าปล่อยให้ AI ของคุณส่งมอบงานที่ไร้ประสิทธิภาพในทาง SEO เมื่อสร้างไฟล์เมตา ให้ทำตามขั้นตอนดังนี้:
- ตรวจสอบเอาต์พุตของ
robots.tsหรือpublic/robots.txtของคุณทันทีโดยใช้เครื่องมืออิสระ - ยืนยันการบิลด์โปรดักชัน ตรวจสอบให้แน่ใจว่าเส้นทางที่ถูกสร้างขึ้นนั้นเข้าถึงได้จริงโดยไม่มีส่วนหัวที่ขัดแย้งกัน
- เขียนคำสั่ง AI ให้ดีขึ้น: ใช้คำสั่ง Markdown ที่มีโครงสร้างพร้อมพารามิเตอร์
ExpectedและActualเมื่อขอให้ LLM ของคุณอัปเดตคำแนะนำการเก็บข้อมูล
ผู้ช่วย AI ของคุณสามารถเขียนโค้ดได้ดี — เพียงแต่มันไม่รู้ว่าทำผิดพลาดที่ตรงไหน ให้แผนที่ข้อผิดพลาดจาก WebValid แก่มัน แล้วมันจะแก้ไขทุกอย่างด้วยตัวเอง