什麼是Robots.txt檔? 它有什麼作用?
Robots.txt 是網站裡的一個檔,它告訴搜尋引擎抓取工具(蜘蛛)禁止或允許抓取網站的哪些內容。 主流搜尋引擎(包括Google、Bing和Yahoo)都能夠識別並尊重Robots.txt的要求。
如需查看網站是否有Robots檔,請訪問網址:網域/robots.txt,譬如 https://loyseo.com/robots.txt,下圖的示例,是一個WordPress網站安裝完Rank math SEO外掛程式自動生成的robots檔及其內容。
Robots.txt 是怎麼運作的?
要想知道Robots.txt檔是如何發揮作用的,就要瞭解搜尋引擎的工作機制:(1)爬行(2)抓取(3)索引(也可以叫做收錄)。
- 爬行:搜尋引擎的蜘蛛在爬網的過程中,通過從其他網站中獲取到了你的網址,那麼它就會記錄下這個網址。 還有,你也可以通過搜尋引擎的站長工具,譬如在Google Search Console中提交你的網站地圖(Sitemap),告知搜尋引擎你的網站網址。
- 抓取:蜘蛛通過訪問之前爬行獲取的網址,抓取你網頁里的內容並存檔。 爬行就像記錄商店門牌號,抓取就是進店拍照。 那是否你提交的網址一定都會被抓取呢? 不一定,因為搜尋引擎分配給你的抓取份額是有限的,如果你的網站很小,那基本不用擔心,那如果你的網站規模龐大,那麼,對於使用Robots.txt檔,禁止某些不必要的內容被抓取,就很用必要了,這能讓抓取份額用在有意義的地方,而不是被無意義的內容消耗。
- 索引:也被稱為收錄,英文叫做index,也就是搜尋引擎將之前抓取到的內容,呈現到使用者搜索的相關搜尋引擎結果中了。 你可以通過在搜尋引擎的搜索框中輸入命令,site:你的網站或網址,以便查看你的網站有多少以及哪些網址被收錄。 也可以直接在站長工具中查看被索引的網頁。 是否被抓取的內容一定會被索引呢? 並不是,搜尋引擎有自己的規則來判定你的內容是否值得被索引,如果你的內容是重複的、抄襲的、無意義無價值的,那麼很可能是被抓取了,但是沒有索引。 並且索引也是需要時間的,尤其對於新站,就像一個新人一樣,還需要時間考驗你,至於這個時間是多久,那就是搜尋引擎說了算了,你需要做的是持續堅持的做正確且有用的事情:寫內容體現專業度、做外部拓展增加信用度。
好了,瞭解到搜尋引擎的工作機制后,我們開始說Robots文件的運作。
當搜尋引擎的蜘蛛來到網站時,首先會閱讀這個Robots.txt檔,瞭解到什麼網址禁止被抓取后,搜尋引擎便不去抓取這些頁面。
但是,如果這些網址存在其他的導入連結(即外鏈時),譬如其他網址給了你一條外鏈指向這個內容,那麼這個頁面還是可能會被索引的,雖然,因為無法抓取而不能直接獲取頁面的內容,但是搜尋引擎會根據外鏈提供的相關信息對這個內容進行索引並展示在搜尋結果中。
所以,如果你想一個內容不被抓取,也不被索引,那麼你還需要通過在內容中設置noindex元標記(meta robots)。
好了,瞭解了Robots.txt的工作原理后,我們開始製作一個robots.txt檔。
如何創建Robots.txt檔
如果你使用wordpress建站的,那麼安裝外掛程式rank math seo或其他主流seo外掛程式后,基本都能直接在外掛程式中找到robots.txt文件的編輯功能,你只需要按下文所述,學習如何編輯指令規則即可。
以rank math seo外掛程式為例,你可以按照下圖所示,編輯robots.txt檔。
如果你不是用wordpress建站的,且建站系統本身不提供robots.txt編輯功能,你可以按照下文的教程自製。
第一步:本地創建Robots.txt檔
請用記事本或者其他文本型的軟體(譬如Emeditor)創建一個名為robots.txt的檔,注意名字不能改,也不能大寫,必須全小寫。
第二步:編寫指令規則
Robots.txt文件怎麼寫呢?
請用記事本繼續編輯這個檔案,輸入指令規則,示例如下:
User-agent: * #搜索引擎抓取工具名称(即蜘蛛):任意,不限,誰都行 Disallow: / #禁止抓取:根目錄下的所有內容 Allow:/post/ #允许抓取:/post/及其目錄下的所有內容
上面這段是一組指令規則的構成,你可以參照寫多段。
user-agent表示搜尋引擎抓取工具的名字,disallow就表示禁止抓取,allow表示允許抓取,#号后的内容为注释,實際使用時可以去掉。 注意,規則部分區分大小寫,譬如/post/和/POST/不是相同的內容。
搜尋引擎抓取工具的名字是多種多樣的,谷歌、百度、必應都各自有自己的蜘蛛,並且每家搜尋引擎的蜘蛛還不止一種,譬如谷歌有Googlebot、Googlebot-Image等等,如果你想瞭解谷歌蜘蛛種類,可以查看此文。
下表是常見的搜尋引擎的蜘蛛名稱。
搜尋引擎 | 類型 | User-agent |
---|---|---|
Baidu | General | baiduspider |
Baidu | Images | baiduspider-image |
Baidu | Mobile | baiduspider-mobile |
Baidu | News | baiduspider-news |
Baidu | Video | baiduspider-video |
Bing | General | bingbot |
Bing | General | msnbot |
Bing | Images & Video | msnbot-media |
Bing | Ads | adidxbot |
General | Googlebot | |
Images | Googlebot-Image | |
Mobile | Googlebot-Mobile | |
News | Googlebot-News | |
Video | Googlebot-Video | |
AdSense | Mediapartners-Google | |
AdWords | AdsBot-Google | |
Yahoo! | General | slurp |
Yandex | General | yandex |
我們可以針對不同的蜘蛛寫不同的規則,下面以示例進行詳解。
下面的指令表示:針對谷歌和百度的蜘蛛,禁止抓取的內容=無,也就是什麼都可以抓取。
User-agent: Googlebot User-agent: Baiduspider Disallow:
下面的指令是基於WordPress建站的網址結構的,解釋已在備註中
User-agent: Googlebot Disallow:/wp-admin/ #禁止抓取wordpress网站后台的内容 Disallow:/my-account/ #禁止抓取会员中心目录下的内容 Disallow:*/feed/ #wordpress会自动生成feed,為了不消耗抓取份額,可以禁用,其中*表示/feed/之前可以是任意內容 Disallow:/?s= #在wordpress网站中,這是關鍵詞搜尋結果的網址結構,所以禁止抓取關鍵詞搜尋結果頁,避免重複內容被抓取 Disallow:/*.gif$ #禁止抓取所有gif文件 User-agent: * Disallow:/ #除了谷歌,其他搜尋引擎都不允許爬取網站 Sitemap: https://example.com/sitemap.xml #sitemap规则不是必须写的,但是建議寫,以便蜘蛛抓取。 Sitemap: http://www.example.com/sitemap.xml
如果你想知道更多的robots.txt規則撰寫方法,請點擊此處。
第三步:上傳檔至網站根目錄
robots.txt文件應該放到哪裡呢?
由於網站建站系統不同、伺服器架構不同,上傳檔的方法沒有統一的,譬如可以藉助主機的管理面板,又或是用FTP,在連通到網站所在的文件目錄后,將robots.txt放在網站所在資料夾第一層中(也就是根目錄)。
當成功上傳后,通常在瀏覽器中訪問網域/robots.txt就可以查看到檔。
第四步:測試 robots.txt 檔
測試robots.txt中所寫的規則是否正確有效,需藉助搜尋引擎站長工具中提供的功能,以谷歌為例,我們用google search console的robots.txt測試工具(如下圖)來進行測試,但這要求你先要將網站添加到google search console中。
當打開測試工具后,我們能看到谷歌獲取了我們網站里的robots文件內容,如果你發現它不是最新版的,請把規則部分複製到輸入框中,然後點擊提交進行更新。 接下來,在圖的左下角,輸入你需要測試的網址,點擊右側的測試按鈕后,系統會反饋已攔截或已允許,當被攔截時,還會突出顯示是哪條規則攔截了它。
如果網址是允許抓取的,那麼會提示已允許。 所以當發現想要被禁止爬取的網址被允許,那你就要檢查一下規則是否撰寫正確。
常見問題
Robots.txt檔是必須的嗎? 可以不要嗎?
如果你的網站較小,且索引符合你的預期,你可以不要robots.txt檔,主流搜尋引擎足夠聰明的去識別你的內容。 但建議還是要有一個Robots.txt文件,因為搜尋引擎訪問網站時,首先就是查閱它。
可以將資源類檔(css、js)禁止抓取嗎?
不要這麼做,因為搜尋引擎需要靠資源類文件來解讀你的網頁。