如何隱藏頁面以防被搜尋
在網路上為我們導航的搜尋引擎使用一些小程式 --- 例如我們所知道的’robots’、’bots’、 ’crawlers’和’spiders’ --- 來對頁面進行索引。然而,當開發一個網站,尤其是使用ASP進行開發時,做到防止頁面被索引卻是非常有用的。當這些搜尋引擎正在回顧它們對所建立的web 頁面進行動態索引的方案時,例如ASP頁面,本文將協助你學習一些重要的技巧來避免robots 跟蹤那些你不情願被它們索引的頁面。
這為什麼與你有關?
比方說現在你訪問了XYZ公司的Web 網站,用你所熟悉的搜尋引擎對’XYZ Corp.’ 進行搜尋。如果你發現你的管理頁面也在相關的連結資料表中的話就會有點擔心了。如果你有一個電子商務網站,你會不願意在使用者結束前面的頁面之前,得到這個網站的定單部分最後一頁的url 。不僅僅是網管人員不希望發生的。對於使用者來說,有些頁面不能正常運行也是煩惱的事,或者是因為他們沒有適當的許可權,或者因為他們沒有按照設定的順序訪問頁面。這樣也不利於你的網站的聲譽。這與那些商業搜尋引擎的經營者自身也有關係。因為他們想要提供準確的連結來改善服務。
那麼,如何防止這些程式對你的網站的某些頁面進行索引呢?有兩種方法可供選擇,一是在根目錄下包含一個名為robots.txt 的檔案,或者是使用< META > 標記。
包含一個robots.txt 檔案
早在1994年,一個自動郵件發送列表就聯合提出了一個防止robots 拖拽網站的協定。但是這並不是一個正式的標準,它不能提供執行的保證,但是卻為許多robot 作者所使用。
建立一個robots.txt 檔案非常簡單,它表明網管人員所希望的robot 行為標準。注意檔案名稱必須用小寫字母,而且必須放在網站的根資料夾中,例如http://xyzcorp/robots.txt ,這樣一個檔案就能帶出整個網站的全部細節。
一個robots.txt 檔案中有什嗎?
每個robots.txt 檔案包含一條或多條記錄。一條記錄由robot 的使用者代理程式字串組成,即你願意遵循的指示和應用於它的指示。不用擔心你需要知道在web中漫遊的所有robot的使用者代理程式字串,因為你可以用萬用字元* 來應用所有的robots。以下是一個記錄的例子:
User-agent: *
Disallow: /XYZfinances.asp
Disallow: /admin
Disallow: /news/update.asp
除了使用者代理程式字串/萬用字元,只需要包含一個disallow 命令。這一個簡單的例子就顯示了你將會需要的全部可能性。它表明沒有使用者代理程式字串能夠進入 XYZfinances.asp ,用這一行表示:
Disallow: /XYZfinances.asp
或者說使用者代理程式字串不能進入管理檔案夾及其下面的所有檔案夾:
Disallow: /admin
或者是新聞檔案夾中的update.asp檔案,如果新聞檔案夾中所有其它內容都可以被索引的話。
在一條記錄中你願意包含多少使用者代理程式字串的名字都可以。同樣在任何一個robots.txt 檔案中,你願意包含多少條記錄都可以(只要用一個或多個空行分隔開這些記錄就可以)。
每一條單獨的記錄都可以為一個或多個robots提供不同的指示。但是為那些沒有用使用者代理程式字串所命名的引擎增加一個萬用字元規則是明智的。最流行的選擇是維護用一條記錄和一個代表使用者代理程式字串的萬用字元所表示一個方案。一個有196個使用者代理程式的清單可參考
http://info.webcrawler.com/mak/projects/robots/robots.html。
普遍認為,robots應該忽略大小寫和版本號碼。要記住這是大多數商業搜尋引擎的robots作者們的意見,因為你不想用那些沒用的頁面來使使用者感到苦惱。但是,雖然在命令列中你可以不必考慮大小寫,但是必須保證在鍵入URL時是準確無誤的。雖然Windows NT 對檔案名稱和路徑名的大小寫無所謂,但並不是所有的平台都如此。
你希望包含進去的其它東西就只有注釋了,這些使用UNIX bourne shell 協定,如用#符號表示在hash 符號前面空白,和一行中可以被忽略的剩餘部分。如果一行中只包含一個注釋的話,它就可以完全被忽略,雖然它在記錄之間的作用與空行並不相同。
現在來看看兩個最終的例子。
例1
# Don’t come to this site
User-agent: *
Disallow: / # Disallows anything
例2
# robots.txt for XYZcorp
# webmaster: John Doe contact JohnD@xyzcorp.com
User-agent: * # Applies to all robots except next record
Disallow: /store/order/ # No robot should visit any URL starting with
/store/order/
Disallow: /admin/ # Disallow any pages in the admin folder
Disallow: /world_domination.asp # Disallow world_domination.asp
好,這就是有關robot.txt檔案的全部內容。
下面介紹如何使用 < META >標記 。
使用一個< META > robot 標記
同樣,你還是不能保證一個robot 會完全遵守< META >標記中的指示,但是對商業搜尋引擎來說還是十分有效。< META >標記必須包含在一個檔案的< HEAD > 部分。他們工作的原理是告訴robot 是否可以對其中有這個標記的頁面進行索引,是否可以跟隨頁面上或其下的檔案夾中的任何連結。
同樣,文法非常簡單。第一個例子是:
< META NAME="robots" CONTENT="noindex" >
這行代碼告訴 robot不要索引這一頁。
下一個例子:
< META NAME="robots" CONTENT="nofollow" >
允許robot索引這一頁,但是規定它不能夠跟隨這一頁上的任何連結。如果你想將二者都禁止,可以使用:
< META NAME="robots" CONTENT="noindex, nofollow" >
這表示不要索引這一頁,也不要跟隨這頁上的任何連結。但是,還有一個更簡單的方法:
< META NAME="robots" CONTENT="none" >
還是表示不要索引這一頁,或跟隨這頁上的任何連結。
不幸的是,如果你有一個名為admin.asp的檔案與 update.asp相連結,在admin.asp中使用< META >
標記來防止robot 對admin.asp 或 update.asp 進行索引,卻忘記在另一個與update.asp 相連結的
頁面中也做同樣的處理,那麼robot 還是可以通過這個漏掉< META > 標記的第二頁而到達update.asp。
另外,你還可以使用值索引。但由於它們被忽略時是預設值,因此這是沒有必要的,而且這樣做沒有意義。
如果你使用的是IIS,那麼應該總是使用定製的 HTTP 標頭檔來執行< META > 標記方法。從理論上講,一個robot 對以這種方式建立的< META > 標記的反應應該是完全一樣的,看起來是這樣:
< META HTTP-EQUIV="robots" CONTENT="noindex" >
從理論上講,現在我們就可以對所有的檔案夾或檔案夾中的檔案或虛擬路徑使用IIS建立的定製標頭檔。但是到目前為止,這種方法的測試並不成功。這些方法都不能完全保證將你的頁面藏起來。確實,如果有人故意寫一個robot 去找到你的私用頁面的話,他們反而成了指向作者想要保護的頁面的指標。但是,對於防止商業網站索引頁面來說,這些方法還是奏效的,也只有在這方面是有意義的。