robots.txt 驗證器
貼上 robots.txt 內容以檢查語法。解析 User-agent、Disallow、Allow、Sitemap 指令,並可視化爬蟲訪問規則。
[[ fetchError ]]
[[ labels.or_paste ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]
[[ labels.result_label ]]
[[ labels.errors_label ]]
- [[ labels.line_label ]] [[ err.line ]]: [[ errorMessage(err) ]]
✓ [[ labels.no_errors ]]
[[ labels.blocks_label ]]
User-agent:
[[ ua === '*' ? labels.all_crawlers + ' (*)' : ua ]]
| Disallow | / [[ labels.disallow_empty ]] [[ path ]] |
| Allow | [[ path ]] |
| [[ labels.no_rules ]] | |
| Crawl-delay | [[ block.crawlDelay ]] |
[[ labels.sitemaps_label ]]
Tips
- User-agent: * 適用於所有爬蟲。指定了機器人名稱(如 Googlebot)的塊優先順序高於萬用字元塊。
- Disallow:(空值)表示"允許所有路徑"。
Disallow: /(僅斜槓)表示禁止所有內容,請注意區分。 - Allow: 指令優先於
Disallow:。例如,先寫Disallow: /private/,再寫Allow: /private/public.html,則該檔案允許訪問。 - Crawl-delay: 是非標準指令,指定請求間隔(秒)。Bing 和 Yandex 支援,Google 不支援——請使用 Google Search Console 的抓取頻率設定。
- Sitemap: 指令可告知搜尋引擎站點地圖的 URL。Google 和 Bing 均識別此指令,建議與 Search Console 手動提交結合使用。
常見問題
會。用
Disallow 遮蔽某個頁面後,爬蟲無法讀取其內容,該頁面不會被索引。但若有外部連結指向該頁面,搜尋引擎可能仍會將其列為"已知但未爬取"。如需徹底排除,需結合 noindex 元標籤。不適用。robots.txt 的作用範圍是每個域名獨立的。
example.com/robots.txt 不適用於 blog.example.com,子域名需要各自的 robots.txt。Googlebot 支援
*(任意字串)和 $(URL 末尾)。例如,Disallow: /private/*.pdf$ 可遮蔽 /private/ 下的所有 PDF 檔案。並非所有爬蟲都支援萬用字元,請查閱各機器人的文件。
閒話 ― robots.txt 的誕生 ― 網際網路禮儀的起源
1994 年,荷蘭工程師 Martijn Koster 提出了機器人排除協議(REP)。當時網路爬蟲無序爬取網站,給伺服器造成過大負擔。Koster 的想法很簡單:"在網站根目錄放一個規則檔案,爬蟲就能讀取。" 這個檔案就是 robots.txt。
重要的是,robots.txt 是一種自願遵守的君子協議,沒有強制約束力。友好的爬蟲(如 Googlebot、Bingbot)會遵守它,但惡意爬蟲會無視它。因此 robots.txt 適合告知搜尋引擎哪些頁面不需要索引,但不能用於保護敏感內容——機密頁面必須通過身份驗證來保護。
機器人排除協議作為非正式慣例存在了近三十年,直到 2022 年 9 月才被 IETF 正式註冊為 RFC 9309。RFC 明確了指令名稱不區分大小寫,並解決了長期存在的語法歧義。