用Robots.txt來和搜尋機器人打交道

喜歡亂逛的機器人

幾天前的:「主機商客戶資料外洩事件」似乎沒有後續的消息,不過可以確定的是Google在第二天一早就把整個快取網頁中的相關資料都清除了,這個事件反應了兩個不容忽視的事實:

  1. Googlebot是一個很厲害的東西,只要你一不小心就有可能被它挖到不該公開的資料。
  2. 由於網管人員的一個小疏失,就可能造成公司的重大損失。

所以只要你有網站,不管是用什麼程式架設的,你就應該好好地管一下Googlebot在你家的行動,它雖然很厲害但是也是很聽話的,只要你好好跟它溝通一下,就不會對你的網站造成危害。

什麼是Googlebot

Google機器人(Googlebot)有好幾種名稱,有人叫它「爬蟲(Crawler)」,也有人叫它「蜘蛛(Spider)」,不過它既不是機器人,也不是爬蟲,更不是蜘蛛,而是Google用來檢索你的網頁的一種「程式」,這個程式會主動到你的網站,然後分析你的網站資料並且將資料傳回到Google的搜尋資料庫中,當有人在Google的搜尋引擎輸入「關鍵字」搜尋時,就是從Googlebot所取回的資料中找出最適合的顯示在搜尋結果頁面(SERP),所以就你的網站一定要善待它,萬一它把你的網站列為「拒絕往來戶」那可是一件最糟的事。

為了要討好Googlebot,你的部落格最好像高登之前教大家的:「向Google提交Sitemap」的方法提交一份網站地圖如Googlebot作參考,這樣子它才會樂於到你家逛逛。

但是這一隻「怪獸」很喜歡在你家到處亂逛,所以為了要限制Googlebot的行動,Google貼心地提出了「Robots.txt」這樣子的解決方案,讓Googlebot在你家真的就會乖乖聽話,而不再到處惹禍!

Robots.txt的用途

Robots.txt是一個提供給搜尋引擎機器人Bot參考的檔案,這個檔案要放在網站的「根目錄」,一般設定好了就很少動它。你可以在你的電腦編輯這個檔案再上傳到網站就可以了,裡面主要是記載網站檢索的容許和限制項目。

這個協定雖然是Google訂的,但是其他搜尋引擎也大都遵循這一個模式,當然你也可以不設Robots.txt讓搜尋引擎自己找(如果沒有什麼不能見人的資料的話)。

我們就來看一下怎麼設這個Robots.txt檔案。

Robots.txt語法

Robots.txt裡面可以有幾個指令可以用:

  • User-agent:指定檢索程式的種類。
  • Allow:允許檢索的項目。
  • Disallow:禁止檢索的項目。
  • $:從後面往前的萬用字元,用來指定檔案類型用的。
  • *:從前面往後的萬用字元,用來指定目錄或檔名用的。
  • Sitemap:用來指定Sitemap的名稱。

我們來看一下最常見的Robots.txt設定像這樣:

User-agent: *
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content
Disallow: /trackback
Disallow: /feed
Disallow: /comments
Disallow: /category
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Allow: /wp-content/uploads

第一行的User-agent是指定對所有的Bot程式都有效

接下來的一連串Disallow就是禁止檢索的目錄,那為為什麼要禁止檢索這些目錄呢?有二個目的:

  1. 這些目錄裡在跟你網站內容無關的東西,或是有隱私的資料不希望被檢索,前面所提到的主機商案例應該就是網管人員沒有設該管理後台目錄的禁止檢索。
  2. 為了避免相同的網頁被重覆檢索,例如「分類文章」和「彙整文章」等。

最後面的Allow則是允許檢索該目錄,如果有Disallow掉的目錄下面有要允許檢索的就要加Allow來設除外條件。

什麼網站可以設Robots.txt

如果你是放在BSP的話那就免了吧!所有的BSP(包括Blogger)都不讓你上傳檔案,所以就只能看該BSP的網管,因此最好的作法是不要放任何不能曝光的資料在網站上才是上上之策。

如果是自架的網站那就一定可以設Robots.txt,至於怎麼設就請你自己找一下資料了,如果你是用WordPress架站的話,上面的設定值應該就夠用了。

如果覺得還不夠的話,請看一下別人的建議,不過提醒你每一個網站都要針對自己的狀況來設,像我的網站是用WordPress的預設網址結構,就不能有禁止「?」的檢索設定,這樣子所有的文章都檢索不到了!

延伸閱讀

27 則留言

  1. 指一下小錯誤,blogger的用戶應該是可以在google sitemap,產生攔截其它bot的規則才對喔,因為blogger已經幫你上傳好了「robots.txt」了,像我的網站的機器人規則就是在「http://inote.tw/robots.txt」中。 ^^

      • 這一次外洩的網頁還真沒有密碼,他們的登入/權限控管機制非常的糟糕,
        只有在管理後台第一個頁面有帳密/IP限制,
        登入後的其他內頁由現有資料推測都是直接把登入後的user_id參數帶在GET的URL內作為登入依據,所以從那些被CACHE到的頁面原始URL裡面全部都有個 user_id=70的參數存在.
        而且誇張的是在頁面裡面的前一筆/後一筆中的url也都把user_id參數直接代進去.
        如果這只是內網使用就算了,可是那些內部的詳細資料頁面基本上都沒作來源IP限制這才糟糕.在曝光之後沒多久就有人從網頁原始碼相關連結中挖出不少可以直接連過去看的頁面.
        簡單總結就是大門有上鎖,可是除了大門以外的四面牆都沒有,只要繞過大門就暢通無阻了..

    • 啊,補充一下,這兩個東西對 Google 的機器人會是有效的
      但對其他搜尋引擎就不一定了
      這點你附的 Google 文件裡也有說

      • 我們要提交的對象是Google所以請你看一下延伸閱讀裡面Google官方的說法,不要再道聽途說了!
        至於有的Bot不遵循Robots.txt裡面的指示那是那些不照規矩來的Bot的問題不是robots.txt的問題,只要那些程式居心不良你再怎麼防都沒有用的!

        • 根據 Google 的官方說法,那些用法確實不在標準裡
          不過,剛才也查了 Yahoo! 和 MSN 的文件
          結果他們也有支援...看來我好像白擔心了 XD|||

  2. 請問高登哥
    我從Google 網站管理員工具中看到
    有檢索錯誤(我下面用→代表的是有連結到此錯誤網頁的)
    http://kevin-blog.twbbs.org/page/2/
    →http://kevin-blog.twbbs.org/?paged=2

    但是我親自去這些網頁看 卻也沒有發現有連結到這些錯誤頁面的連結
    請問高登哥是出了是了?

  3. 版主您好
    我的部落格在google網站管理員工具-檢查網站健康狀態顯示出Some important page is blocked by robots.txt,平常使用也沒有亂改html語法,部落格是在google blogger建立的,想向您請教要如何處理
    謝謝

    • Blogger你沒有robots.txt的權限,但是你可是在網址列輸入 你的部落格網址/robots.txt 看到設定
      有問題的話各 Blogger 客服反應
      不過我看到的跟其他的 Blogger 都一樣啊?!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料