一月 12

用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的預設網址結構,就不能有禁止「?」的檢索設定,這樣子所有的文章都檢索不到了!

延伸閱讀

Related Posts with Thumbnails

相關文章

16 則留言

  1. #
    海芋
    2009年01月12日 11:48:41

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

    回應本則留言
    • #
      高登
      2009年01月12日 11:59:41

      同樣是Google的當然要自己捧場,但是我的意思是:你自己不能改這個檔案,所以一樣沒得玩,不過真的是不是能改可能還要再確認比較好

      回應本則留言
      • #
        海芋
        2009年01月12日 12:29:52

        剛試了一下,高登是對的,blogger目前的確不能修改robots.txt

        真的是只可遠觀而不可褻玩焉啊

        回應本則留言
  2. #
    阿達
    2009年01月12日 18:47:50

    想請問版大
    如果頁面本身有設定密碼(需Login才能看到)
    這樣Google大神還會爬的到嗎?

    回應本則留言
    • #
      高登
      2009年01月12日 20:56:03

      你說這一次外洩的網頁會沒有密碼嗎?
      這就是Google恐怖的地方!

      回應本則留言
      • #
        路人
        2009年01月13日 03:22:57

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

        回應本則留言
        • #
          高登
          2009年01月13日 12:08:49

          以Googlebot的守法程度還被挖到真的是網管的問題,不過有其他的Bot就不一定照Robots.txt的規定爬,因此根本解決之道就是像這種頁面不應該放在公開的伺服器上面

          回應本則留言
          • #
            阿達
            2009年01月13日 14:37:46

            不好意思
            我還是不太懂

            如果第一層有帳號密碼
            那google怎麼進的去??

  3. #
    成小山。
    2009年01月13日 13:36:47

    很詳細的分析~
    不過看過還是不懂,哈哈!
    網路的世界果然很難懂阿!ㄎㄎㄎ

    回應本則留言
  4. #
    cctsai
    2009年01月14日 01:34:02

    凡走過…
    多少會…
    留下痕跡…

    回應本則留言
  5. #
    風痕影
    2009年06月21日 22:57:19

    根據 http://www.robotstxt.org/robotstxt.html 的說法
    路徑裡好像不能用萬用匹配符和正規表達式耶…
    所以 * 和 $ 應該都是不能用的

    回應本則留言
    • #
      風痕影
      2009年06月21日 23:01:56

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

      回應本則留言
      • #
        高登
        2009年06月22日 00:19:30

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

        回應本則留言
        • #
          風痕影
          2009年06月22日 11:45:54

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

          回應本則留言
  6. #
    高登
    2009年01月13日 14:43:34

    To 阿達:在連結的小歪碎碎唸網站有一些可能原因的說明,應該就是那樣子沒錯

    回應本則留言

留下您的意見

首次留言要通過審核之後才會出現在版面上,請大家不要重覆留言。如果留言的內容與本篇文章無關、廣告留言或是留下假的網址及信箱的那留言可能就會跑到火星去哦!如果怕忘記在哪一篇文章留言,你只要在下面的e-mail通知那裡打勾就可以收到留言回覆的Email,如果您剛留的留言要修改可以按留言時間後面的「e」修改,謝謝大家的配合!

blank
Free PageRank Checker 加到Technorati的最愛 中時部落落格2008嚴選優格