วิธีที่ Google ตีความข้อกําหนดของ robots.txt

Crawler อัตโนมัติของ Google รองรับโปรโตคอลการยกเว้นสำหรับโรบ็อต (Robots Exclusion Protocol หรือ REP) ซึ่งหมายความว่าก่อนที่จะทำการ Crawl เว็บไซต์ใด Crawler ของ Google จะดาวน์โหลดและแยกวิเคราะห์ไฟล์ robots.txt ของเว็บไซต์ดังกล่าว เพื่อดึงข้อมูลว่าส่วนใดของเว็บไซต์ที่อาจทำการ Crawl ได้ REP ใช้ไม่ได้กับ Crawler ของ Google ที่ผู้ใช้ควบคุม (เช่น การสมัครใช้บริการฟีด) หรือ Crawler ที่ใช้เพื่อเพิ่มความปลอดภัยของผู้ใช้ (เช่น การวิเคราะห์มัลแวร์)

หน้านี้อธิบายการตีความ REP ของ Google สำหรับร่างมาตรฐานต้นฉบับ โปรดดู RFC 9309

ไฟล์ robots.txt คืออะไร

หากไม่ต้องการให้ Crawler เข้าถึงส่วนต่างๆ ของเว็บไซต์ คุณสร้างไฟล์ robots.txt ที่มีกฎที่เหมาะสมได้ ไฟล์ robots.txt เป็นไฟล์ข้อความอย่างง่ายที่มีกฎซึ่งระบุว่าส่วนใดของเว็บไซต์ที่ Crawler สามารถเข้าถึงได้ เช่น ไฟล์ robots.txt สําหรับ example.com อาจมีลักษณะดังนี้

# This robots.txt file controls crawling of URLs under https://example.com.
# All crawlers are disallowed to crawl files in the "includes" directory, such
# as .css, .js, but Google needs them for rendering, so Googlebot is allowed
# to crawl them.
User-agent: *
Disallow: /includes/

User-agent: Googlebot
Allow: /includes/

Sitemap: https://example.com/sitemap.xml

หากคุณเพิ่งใช้ robots.txt ให้เริ่มต้นด้วยการอ่านข้อมูลเบื้องต้นเกี่ยวกับ robots.txt นอกจากนี้คุณยังดูเคล็ดลับในการสร้างไฟล์ robots.txt ได้อีกด้วย

ตำแหน่งไฟล์และช่วงความถูกต้อง

คุณต้องวางไฟล์ robots.txt ในไดเรกทอรีระดับบนสุดของเว็บไซต์ โดยใช้โปรโตคอลที่รองรับ URL ของไฟล์ robots.txt คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (เช่นเดียวกับ URL อื่นๆ) ในกรณีที่ใช้ Google Search โปรโตคอลที่รองรับ ได้แก่ HTTP, HTTPS และ FTP ใน HTTP และ HTTPS, Crawler จะดึงไฟล์ robots.txt ที่มีคำขอ GET แบบไม่มีเงื่อนไขของ HTTP และใน FTP, Crawler จะใช้คำสั่ง RETR (RETRIEVE) มาตรฐาน โดยใช้การเข้าสู่ระบบแบบไม่ระบุชื่อ

กฎที่ระบุไว้ในไฟล์ robots.txt จะใช้เฉพาะกับโฮสต์ โปรโตคอล และหมายเลขพอร์ตที่โฮสต์ไฟล์ robots.txt เท่านั้น

ตัวอย่าง URL ที่ถูกต้องของ robots.txt

ตารางต่อไปนี้แสดงตัวอย่าง URL ของ robots.txt และเส้นทาง URL ที่ถูกต้อง คอลัมน์ที่ 1 มี URL ของไฟล์ robots.txt และคอลัมน์ที่ 2 มีโดเมนที่ไฟล์ robots.txt จะมีผลและจะไม่มีผล

ตัวอย่าง URL ของ robots.txt
https://example.com/robots.txt

ตัวอย่างนี้เป็นกรณีทั่วไป ซึ่งใช้ไม่ได้กับโดเมนย่อย โปรโตคอล หรือหมายเลขพอร์ตอื่นๆ แต่ใช้ได้กับทุกไฟล์ที่อยู่ในไดเรกทอรีย่อยทั้งหมดของโฮสต์ โปรโตคอล และหมายเลขพอร์ตเดียวกัน

ใช้ได้กับ
  • https://example.com/
  • https://example.com/folder/file
ใช้ไม่ได้กับ
  • https://other.example.com/
  • http://example.com/
  • https://example.com:8181/
https://www.example.com/robots.txt

robots.txt ในโดเมนย่อยใช้ได้เฉพาะกับโดเมนย่อยนั้นๆ

ใช้ได้กับ https://www.example.com/

ใช้ไม่ได้กับ

  • https://example.com/
  • https://shop.www.example.com/
  • https://www.shop.example.com/
https://example.com/folder/robots.txt ไม่ใช่ไฟล์ robots.txt ที่ถูกต้อง โปรแกรมรวบรวมข้อมูลไม่ตรวจหาไฟล์ robots.txt ในไดเรกทอรีย่อย
https://www.exämple.com/robots.txt

IDN เทียบเท่ากับเวอร์ชัน Punycode ดู RFC 3492 เพิ่มเติม

ใช้ได้กับ
  • https://www.exämple.com/
  • https://xn--exmple-cua.com/

ใช้ไม่ได้กับ https://www.example.com/

ftp://example.com/robots.txt

ใช้ได้กับ ftp://example.com/

ใช้ไม่ได้กับ https://example.com/

https://212.96.82.21/robots.txt

robots.txt ซึ่งมีที่อยู่ IP เป็นชื่อโฮสต์ใช้ได้เฉพาะสำหรับการ Crawl ที่มีที่อยู่ IP นั้นเป็นชื่อโฮสต์ robots.txt ใช้กับทุกเว็บไซต์ที่โฮสต์ในที่อยู่ IP นั้นโดยอัตโนมัติไม่ได้ (แม้ว่าอาจมีการใช้ไฟล์นั้นร่วมกันก็ตาม ซึ่งในกรณีนี้ไฟล์จะใช้ได้ภายใต้ชื่อโฮสต์ที่ใช้ร่วมกันด้วย)

ใช้ได้กับ: https://212.96.82.21/

ใช้ไม่ได้กับ https://example.com/ (แม้ว่าจะโฮสต์ใน 212.96.82.21)

https://example.com:443/robots.txt

หมายเลขพอร์ตมาตรฐาน (80 สำหรับ HTTP, 443 สำหรับ HTTPS, 21 สำหรับ FTP) จะเทียบเท่ากับชื่อโฮสต์เริ่มต้น

ใช้ได้กับ

  • https://example.com:443/
  • https://example.com/

ใช้ไม่ได้กับ https://example.com:444/

https://example.com:8181/robots.txt

ไฟล์ robots.txt ในหมายเลขพอร์ตที่ไม่ใช่มาตรฐานจะใช้ได้เฉพาะสำหรับเนื้อหาที่มีให้ผ่านหมายเลขพอร์ตนั้น

ใช้ได้กับ: https://example.com:8181/

ใช้ไม่ได้กับ https://example.com/

การจัดการข้อผิดพลาดและรหัสสถานะ HTTP

เมื่อส่งคําขอไฟล์ robots.txt รหัสสถานะ HTTP ของการตอบสนองของเซิร์ฟเวอร์จะมีผลต่อวิธีที่ Crawler ของ Google ใช้ไฟล์ robots.txt ตารางต่อไปนี้สรุปวิธีที่ Googlebot พิจารณาไฟล์ robots.txt สําหรับรหัสสถานะ HTTP ต่างๆ

การจัดการข้อผิดพลาดและรหัสสถานะ HTTP
2xx (success) รหัสสถานะ HTTP ที่ส่งสัญญาณแจ้งว่าสำเร็จจะทำให้ Crawler ของ Google ประมวลผลไฟล์ robots.txt ตามที่เซิร์ฟเวอร์ให้ไว้
3xx (redirection)

Google ติดตามการเปลี่ยนเส้นทางอย่างน้อย 5 ครั้งตามที่ RFC 1945 กำหนด จากนั้นจึงหยุดและถือว่าเป็น 404 สำหรับ robots.txt ซึ่งรวมถึง URL ใดๆ ที่ไม่อนุญาตในเชนการเปลี่ยนเส้นทางด้วย เพราะ Crawler ดึงข้อมูลกฎไม่ได้เนื่องจากการเปลี่ยนเส้นทาง

Google จะไม่ติดตามการเปลี่ยนเส้นทางเชิงตรรกะในไฟล์ robots.txt (เฟรม, JavaScript หรือการเปลี่ยนเส้นทางแบบ Meta Refresh)

4xx (client errors)

Crawler ของ Google จะจัดการกับข้อผิดพลาด 4xx ทั้งหมดยกเว้น 429 เสมือนว่าไม่มีไฟล์ robots.txt ที่ถูกต้องอยู่ ซึ่งหมายความว่า Google จะถือว่าไม่มีข้อจำกัดในการทำการ Crawl

5xx (server errors)

เนื่องจากเซิร์ฟเวอร์ให้การตอบสนองคําขอ robots.txt ที่แน่นอนกับ Google ไม่ได้ Google จึงตีความข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ 5xx และ 429 ชั่วคราวว่าเว็บไซต์ไม่อนุญาตให้ทำการ Crawl เด็ดขาด Google จะพยายามทำการ Crawl ไฟล์ robots.txt จนกว่าจะได้รับรหัสสถานะ HTTP ที่ไม่ใช่ข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ ข้อผิดพลาด 503 (service unavailable) ส่งผลให้มีการลองพยายามทำการ Crawl อีกค่อนข้างบ่อย หากไม่สามารถเข้าถึง robots.txt ได้นานกว่า 30 วัน Google จะใช้สำเนา robots.txt ที่แคชไว้ล่าสุด หากไม่มีแคชล่าสุดก็จะถือว่าไม่มีข้อจำกัดในการ Crawl

หากคุณจําเป็นต้องระงับการ Crawl ชั่วคราว เราขอแนะนําให้แสดงรหัสสถานะ HTTP 503 กับทุก URL ในเว็บไซต์

หากเราระบุได้ว่ามีการกำหนดค่าเว็บไซต์อย่างไม่ถูกต้องให้แสดงรหัสสถานะ 5xx แทนที่จะเป็น 404 สําหรับหน้าเว็บที่หายไป เราจะถือว่าข้อผิดพลาด 5xx จากเว็บไซต์นั้นเป็น 404 ตัวอย่างเช่น หากข้อความแสดงข้อผิดพลาดในหน้าเว็บที่แสดงรหัสสถานะ 5xx คือ "ไม่พบหน้าเว็บ" เราจะตีความรหัสสถานะเป็น 404 (not found)

ข้อผิดพลาดอื่นๆ ไฟล์ robots.txt ที่ระบบดึงข้อมูลไม่ได้เพราะมีปัญหาเกี่ยวกับ DNS หรือเครือข่าย เช่น หมดเวลา การตอบสนองที่ไม่ถูกต้อง การเชื่อมต่อที่รีเซ็ต/ขัดข้อง ข้อผิดพลาดจากการแบ่งข้อมูลเป็นส่วนย่อยๆ ของ HTTP ถือว่าเป็นข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์

การแคช

โดยทั่วไประบบจะแคชเนื้อหาของ robots.txt ไว้ไม่เกิน 24 ชั่วโมง แต่อาจแคชนานขึ้นในกรณีที่รีเฟรชเวอร์ชันที่แคชไม่ได้ (เช่น เพราะหมดเวลาหรือมีข้อผิดพลาด 5xx) โปรแกรมรวบรวมข้อมูลต่างๆ อาจใช้การตอบสนองที่แคชไว้ร่วมกัน Google อาจเพิ่มหรือลดระยะเวลาในการแคชตามส่วนหัว HTTP การควบคุมแคชตามระยะเวลาสูงสุด

รูปแบบไฟล์

ไฟล์ robots.txt ต้องเป็นไฟล์ข้อความธรรมดาที่เข้ารหัส UTF-8 และต้องแยกบรรทัดด้วย CR, CR/LF หรือ LF

Google จะข้ามบรรทัดที่ไม่ถูกต้องในไฟล์ robots.txt รวมถึง Unicode Byte Order Mark (BOM) ที่ตอนต้นของไฟล์ robots.txt และจะใช้เฉพาะบรรทัดที่ถูกต้อง ตัวอย่างเช่น หากเนื้อหาที่ดาวน์โหลดมาเป็น HTML แทนที่จะเป็นกฎของ robots.txt สิ่งที่จะเกิดขึ้นคือ Google จะพยายามแยกวิเคราะห์เนื้อหาและเรียกดูกฎ และจะข้ามเนื้อหาอื่น

ในทํานองเดียวกัน หากไฟล์ robots.txt ไม่ได้เข้ารหัสอักขระแบบ UTF-8 ไว้ Google อาจข้ามอักขระที่ไม่ได้อยู่ในช่วง UTF-8 ซึ่งอาจทำให้การถอดความหมายกฎของ robots.txt ไม่ถูกต้อง

ขณะนี้ Google บังคับใช้ขีดจำกัดของขนาดไฟล์ robots.txt ไว้ที่ 500 กิบิไบต์ (KiB) ระบบจะข้ามเนื้อหาที่เกินขนาดไฟล์สูงสุด คุณลดขนาดไฟล์ robots.txt ได้โดยรวมกฎที่จะทำให้ไฟล์ robots.txt มีขนาดใหญ่เกินไปเข้าด้วยกัน เช่น วางเนื้อหาที่ยกเว้นไว้ในไดเรกทอรีแยกต่างหาก

ไวยากรณ์

บรรทัดที่ใช้ได้ของ robots.txt ประกอบด้วยเขตข้อมูล เครื่องหมายโคลอน และค่า ไม่บังคับว่าต้องมีการเว้นวรรค แต่แนะนำให้มีเพื่อให้อ่านง่ายขึ้น ระบบจะข้ามการเว้นวรรคที่ส่วนต้นและส่วนท้ายของบรรทัด หากต้องการใส่คำอธิบาย ให้ใส่อักขระ # ไว้ข้างหน้า โปรดทราบว่าระบบจะข้ามทุกอย่างที่อยู่หลังอักขระ # รูปแบบทั่วไปคือ <field>:<value><#optional-comment>

Google รองรับเขตข้อมูลต่อไปนี้

  • user-agent: ระบุว่ากฎใช้กับโปรแกรมรวบรวมข้อมูลใด
  • allow: เส้นทาง URL ที่อาจมีการรวบรวมข้อมูลได้
  • disallow: เส้นทาง URL ที่ต้องไม่มีการรวบรวมข้อมูล
  • sitemap: URL แบบเต็มของแผนผังเว็บไซต์

ฟิลด์ allow และ disallow เรียกอีกอย่างว่ากฎ (หรือที่เรียกว่าคำสั่ง) กฎเหล่านี้จะระบุในรูปแบบ rule: [path] ซึ่งจะมี [path] หรือไม่มีก็ได้ โดยค่าเริ่มต้น Crawler ที่กำหนดไม่มีข้อจำกัดในการ Crawl Crawler จะไม่สนใจกฎที่ไม่มี [path]

ค่า [path] (หากระบุ) จะมาจากรากของเว็บไซต์ที่ดึงไฟล์ robots.txt มา (โดยใช้โปรโตคอล หมายเลขพอร์ต ชื่อโฮสต์ และชื่อโดเมนเดียวกัน) ค่าเส้นทางต้องขึ้นต้นด้วย / เพื่อกำหนดว่าเป็นราก และคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการจับคู่ URL ตามค่าของเส้นทาง

user-agent

บรรทัด user-agent ระบุว่ากฎใช้กับโปรแกรมรวบรวมข้อมูลใด โปรดดูรายการสตริง User Agent ทั้งหมดที่ใช้ได้ในไฟล์ robots.txt จาก Crawler และสตริง User Agent ของ Google

ค่าของบรรทัด user-agent ไม่คํานึงถึงตัวพิมพ์เล็กหรือใหญ่

disallow

กฎ disallow ระบุเส้นทางที่ไม่อนุญาตการเข้าถึงสําหรับ Crawler ที่กําหนดโดยบรรทัด user-agent ซึ่งจัดกลุ่มไว้กับกฎ disallow Crawler จะข้ามกฎที่ไม่มีเส้นทาง

Google ไม่สามารถจัดทําดัชนีเนื้อหาของหน้าเว็บที่ไม่ได้รับอนุญาตให้ทำการ Crawl แต่อาจยังจัดทําดัชนี URL และแสดง URL ในผลการค้นหาโดยไม่มีตัวอย่างข้อมูล ดูวิธีบล็อกการจัดทำดัชนี

ค่าของกฎ disallow จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

การใช้งาน

disallow: [path]

allow

กฎ allow ระบุเส้นทางที่ Crawler ที่กำหนดจะเข้าถึงได้ ระบบจะข้ามกฎเมื่อไม่มีการระบุเส้นทาง

ค่าของกฎ allow จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

การใช้งาน

allow: [path]

sitemap

Google, Bing และเครื่องมือค้นหาหลักอื่นๆ รองรับเขตข้อมูล sitemap ใน robots.txt ตามที่จำกัดความโดย sitemaps.org

ค่าของเขตข้อมูล sitemap จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

การใช้งาน

sitemap: [absoluteURL]

บรรทัด [absoluteURL] จะชี้ไปยังตำแหน่งของแผนผังเว็บไซต์หรือไฟล์ดัชนีแผนผังเว็บไซต์ ต้องเป็น URL ที่สมบูรณ์ในตัวเอง โดยมีโปรโตคอลกับโฮสต์ และไม่จำเป็นต้องมีการเข้ารหัส URL URL ไม่จำเป็นต้องอยู่ในโฮสต์เดียวกันกับไฟล์ robots.txt คุณสามารถระบุเขตข้อมูล sitemap ได้หลายครั้ง เขตข้อมูล Sitemap ไม่ได้ผูกกับ User Agent ที่เจาะจง และ Crawler ทั้งหมดอาจติดตามได้หากไม่มีการห้ามไม่ให้ทำการ Crawl

เช่น

user-agent: otherbot
disallow: /kale

sitemap: https://example.com/sitemap.xml
sitemap: https://cdn.example.org/other-sitemap.xml
sitemap: https://ja.example.org/テスト-サイトマップ.xml

การจัดกลุ่มบรรทัดและกฎ

คุณจัดกลุ่มกฎที่ใช้กับ User Agent หลายรายการเข้าด้วยกันได้โดยทําซ้ำบรรทัด user-agent สําหรับแต่ละ Crawler

เช่น

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

user-agent: h

ในตัวอย่างนี้มีกลุ่มกฎที่แตกต่างกัน 4 กลุ่ม ดังนี้

  • กลุ่มสําหรับ User Agent "a"
  • กลุ่มสำหรับ User Agent "b"
  • กลุ่มสําหรับทั้ง User Agent "e" และ "f"
  • กลุ่มสําหรับ User Agent "h"

สำหรับคำอธิบายทางเทคนิคของกลุ่ม โปรดดูส่วน 2.1 ของ REP

ลำดับความสำคัญของ User Agent

มีเพียงกลุ่มเดียวเท่านั้นที่ใช้ได้กับโปรแกรมรวบรวมข้อมูลหนึ่งๆ Crawler ของ Google จะระบุกลุ่มกฎที่ถูกต้องโดยค้นหากลุ่มในไฟล์ robots.txt ที่มี User Agent เจาะจงที่สุดซึ่งตรงกับ User Agent ของ Crawler ระบบจะข้ามกลุ่มอื่นๆ และจะข้ามข้อความทั้งหมดที่ไม่ตรงกัน (เช่น ทั้ง googlebot/1.2 และ googlebot* ต่างก็เทียบเท่ากับ googlebot) ลำดับของกลุ่มภายในไฟล์ robots.txt นั้นไม่เกี่ยวข้อง

หากมีการประกาศมากกว่า 1 กลุ่มสําหรับ User Agent ที่เจาะจง ระบบจะรวมกฎทั้งหมดจากกลุ่มที่เกี่ยวข้องกับ User Agent ที่เจาะจงไว้เป็นกลุ่มเดียวแบบภายใน ระบบจะไม่รวมกลุ่มที่เจาะจงของ User Agent และกลุ่มส่วนกลาง (*)

ตัวอย่าง

การจับคู่เขตข้อมูล user-agent

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

ต่อไปนี้คือวิธีที่โปรแกรมรวบรวมข้อมูลจะเลือกกลุ่มที่เกี่ยวข้อง

กลุ่มที่โปรแกรมรวบรวมข้อมูลแต่ละโปรแกรมติดตาม
Googlebot News googlebot-news ติดตามกลุ่ม 1 เพราะกลุ่ม 1 เป็นกลุ่มที่เจาะจงที่สุด
Googlebot (เว็บ) googlebot ติดตามกลุ่ม 3
Googlebot Storebot Storebot-Google ติดตามกลุ่ม 2 เพราะไม่มีกลุ่ม Storebot-Google ที่เจาะจง
Googlebot News (เมื่อรวบรวมข้อมูลรูปภาพ) เมื่อรวบรวมข้อมูลรูปภาพ googlebot-news จะติดตามกลุ่ม 1 googlebot-news ไม่ทำการ Crawl รูปภาพสำหรับ Google รูปภาพ ดังนั้นจึงติดตามเฉพาะกลุ่ม 1
Otherbot (เว็บ) โปรแกรมรวบรวมข้อมูลอื่นๆ ของ Google จะติดตามกลุ่ม 2
Otherbot (ข่าว) Crawler อื่นๆ ของ Google ที่รวบรวมเนื้อหาข่าว แต่ไม่ระบุว่าเป็น googlebot-news จะติดตามกลุ่ม 2 แม้ว่าจะมีรายการสำหรับ Crawler ที่เกี่ยวข้อง แต่รายการนั้นจะใช้ได้ก็ต่อเมื่อจับคู่ตรงกันเท่านั้น

การจัดกลุ่มกฎ

หากในไฟล์ robots.txt มีหลายกลุ่มที่มีความเกี่ยวข้องกับ User Agent ที่เจาะจง Crawler ของ Google จะรวมกลุ่มแบบภายใน เช่น

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

โปรแกรมรวบรวมข้อมูลจะจัดกลุ่มกฎตาม User Agent แบบภายใน เช่น

user-agent: googlebot-news
disallow: /fish
disallow: /shrimp

user-agent: *
disallow: /carrots

โปรแกรมแยกวิเคราะห์ robots.txt จะไม่สนใจกฎอื่นใดที่ไม่ใช่ allow, disallow และ user-agent ซึ่งหมายความว่า ระบบจะถือว่าตัวอย่างข้อมูล robots.txt ต่อไปนี้เป็น 1 กลุ่ม และด้วยเหตุนี้ทั้ง user-agent a และ b จะได้รับผลกระทบจากกฎ disallow: / ดังนี้

user-agent: a
sitemap: https://example.com/sitemap.xml

user-agent: b
disallow: /

เมื่อโปรแกรมรวบรวมข้อมูลประมวลผลกฎของ robots.txt ก็จะไม่สนใจบรรทัด sitemap ตัวอย่างเช่น โปรแกรมรวบรวมข้อมูลจะเข้าใจตัวอย่างข้อมูล robots.txt ก่อนหน้าดังนี้

user-agent: a
user-agent: b
disallow: /

การจับคู่ URL ตามค่าเส้นทาง

Google ใช้ค่าเส้นทางในกฎ allow และ disallow เป็นพื้นฐานในการพิจารณาว่ากฎมีผลกับ URL หนึ่งๆ ในเว็บไซต์หรือไม่ ซึ่งทํางานโดยเปรียบเทียบกฎกับคอมโพเนนต์เส้นทางของ URL ที่ Crawler กําลังพยายามดึงข้อมูล อาจมีการรวมอักขระ ASCII ที่ไม่ใช่แบบ 7 บิตในเส้นทางเป็นอักขระ UTF-8 หรืออักขระที่เข้ารหัส UTF-8 แบบกำหนดสัญลักษณ์เปอร์เซ็นต์เป็นอักขระหลีกตามที่ระบุใน RFC 3986

Google, Bing และเครื่องมือค้นหาหลักอื่นๆ รองรับไวลด์การ์ดเพียงบางรูปแบบสําหรับค่าเส้นทาง อักขระไวลด์การ์ด ได้แก่

  • * กำหนดอินสแตนซ์ของอักขระที่ถูกต้องตั้งแต่ 0 รายการขึ้นไป
  • $ กำหนดส่วนท้ายของ URL

ตารางต่อไปนี้แสดงให้เห็นว่าอักขระไวลด์การ์ดที่แตกต่างกันมีผลต่อการแยกวิเคราะห์อย่างไร

ตัวอย่างเส้นทางที่จับคู่กัน
/ จับคู่รากและ URL ระดับล่าง
/* เทียบเท่ากับ / ระบบละเว้นไวลด์การ์ดปิดท้าย
/$ จับคู่เฉพาะราก อนุญาตให้มีการรวบรวมข้อมูล URL ระดับล่างได้
/fish

จับคู่เส้นทางใดก็ตามที่ขึ้นต้นด้วย /fish โปรดทราบว่าการจับคู่จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

เส้นทางที่ตรงกัน

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

ไม่จับคู่กับ

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish*

เทียบเท่ากับ /fish ระบบละเว้นไวลด์การ์ดปิดท้าย

เส้นทางที่ตรงกัน

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

ไม่จับคู่กับ

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish/

จับคู่กับอะไรก็ได้ในโฟลเดอร์ /fish/

เส้นทางที่ตรงกัน

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

ไม่จับคู่กับ

  • /fish
  • /fish.html
  • /animals/fish/
  • /Fish/Salmon.asp
/*.php

จับคู่เส้นทางใดก็ตามที่มี .php

เส้นทางที่ตรงกัน

  • /index.php
  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

ไม่จับคู่กับ

  • / (แม้ว่าจะจับคู่กับ /index.php)
  • /windows.PHP
/*.php$

จับคู่เส้นทางซึ่งลงท้ายด้วย .php

เส้นทางที่ตรงกัน

  • /filename.php
  • /folder/filename.php

ไม่จับคู่กับ

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

จับคู่เส้นทางใดก็ตามที่มี /fish และ .php ตามลำดับ

เส้นทางที่ตรงกัน

  • /fish.php
  • /fishheads/catfish.php?parameters

ไม่จับคู่กับ /Fish.PHP

ลำดับความสำคัญของกฎ

Crawler จะใช้กฎที่เจาะจงที่สุดตามความยาวของเส้นทางกฎเมื่อมีการจับคู่กฎ robots.txt กับ URL ในกรณีที่กฎขัดแย้งกัน ซึ่งรวมถึงกฎที่มีไวลด์การ์ด Google จะใช้กฎที่เข้มงวดน้อยที่สุด

ตัวอย่างต่อไปนี้จะแสดงให้เห็นว่ากฎใดที่โปรแกรมรวบรวมข้อมูลของ Google จะนําไปใช้กับ URL หนึ่งๆ

กรณีตัวอย่าง
https://example.com/page
allow: /p
disallow: /

กฎที่มีผล: allow: /p เพราะมีความเจาะจงมากกว่า

https://example.com/folder/page
allow: /folder
disallow: /folder

กฎที่มีผล: allow: /folder เพราะในกรณีที่กฎขัดแย้งกัน Google จะใช้กฎที่เข้มงวดน้อยที่สุด

https://example.com/page.htm
allow: /page
disallow: /*.htm

กฎที่เกี่ยวข้อง: disallow: /*.htm เพราะเส้นทางกฎยาวกว่าและตรงกับอักขระใน URL มากกว่า จึงมีความเจาะจงมากกว่า

https://example.com/page.php5
allow: /page
disallow: /*.ph

กฎที่มีผล: allow: /page เพราะในกรณีที่กฎขัดแย้งกัน Google จะใช้กฎที่เข้มงวดน้อยที่สุด

https://example.com/
allow: /$
disallow: /

กฎที่มีผล: allow: /$ เพราะมีความเจาะจงมากกว่า

https://example.com/page.htm
allow: /$
disallow: /

กฎที่มีผล: disallow: / เพราะกฎ allow จะมีผลเฉพาะกับ URL ระดับรากเท่านั้น