談談 robots.txt 的 Disallow 和 Allow 順序

昨天晚上在臉書上看到一篇熱門轉貼:


儘管原文有附一篇文章來佐證自己的看法, 但是基於自己對 robots.txt 的好奇及工程師喜歡驗證事情的吃飽太閒心態, 我做了個短短幾分鐘的驗證, 並記錄相關查詢資料如下。

首先我必須揭露的是我對此次台北市市長候選人連勝文完全沒好感, 這篇文章單純只是探究 robots.txt 被誤導的特性。

根據 Google 自己對 robots.txt 中可使用的關鍵字語法定義是:
User-agent: [the name of the robot the following rule applies to]
Disallow: [the URL path you want to block]
Allow: [the URL path in of a subdirectory, within a blocked parent directory, that you want to unblock]
經不負責翻譯轉換就是:
User-agent: [遵從下列規則的網路爬蟲(搜尋引擎漫遊器)名稱]
Disallow: [你想要禁止網路爬蟲爬進去的網址]
Allow: [位於子資料夾的網址, 在被禁止的父資料夾, 你想允許被爬蟲爬到的地方]
因此看起來 Disallow 跟 Allow 的擺放順序並不是如那篇熱門轉貼中所說的, 造成連勝文官網在 Google 上排行後面的主要原因。


避免因為是我將官方的英文解讀錯, 最後提供 Google 自己寫的 robots.txt 來供大家驗證:
User-agent: *
Disallow: /search
Disallow: /sdch
Disallow: /groups
Disallow: /images
Disallow: /catalogs
Allow: /catalogs/about
Allow: /catalogs/p?
Disallow: /catalogues
Disallow: /news
Allow: /news/directory
...
...
所以看起來並不是像那篇熱門轉貼上所說的, Disallow: / 擺在最前面導致其他文章沒被搜尋到, 更嚴格地說起來, 依照 Google 自己寫的定義跟 robots.txt 來看, "Disallow: 父資料夾"擺在 "Allow: 子資料夾"前面才是比較正確的做法。

雖然那間外包公司出過了一次將 Debug Mode 打開讓大家看一些資訊的包, 但是人家沒錯的部分應該還是要平衡報導一下。(看起來以後接專案也要測風向了, 不然會被一堆人打趴......)

但是 Google 有提到, robots.txt 並不是強制的行為, 每家爬蟲的實作不一樣, 說不定有些順序有關也說不定, 不過至少看起來 Google 目前是沒這樣做就是了。

留言