什麼是robots.txt?

定義
robots.txt是位於網站根目錄的文字檔案,它告訴搜尋引擎爬蟲(機器人)哪些頁面可以抓取,哪些頁面不應該抓取。該檔案遵循稱為機器人排除協定(Robots Exclusion Protocol)或機器人排除標準(Robots Exclusion Standard)的標準。
robots.txt檔案就像網站的交通警察。它是搜尋引擎機器人訪問網站時首先檢查的檔案,透過它,機器人可以了解網站擁有者的抓取政策。例如,您可以指定不希望出現在搜尋結果中的區域,如管理員頁面、重複內容或測試頁面。
重要的一點是,robots.txt是「請求」而不是「命令」。雖然大多數合法的搜尋引擎機器人(Google、Naver、Bing等)會尊重此檔案中的規則,但惡意機器人或爬蟲可以忽略它們。因此,僅靠robots.txt不足以保護敏感資訊,還需要適當的存取控制或加密措施。
特點
- 抓取預算最佳化:透過阻止抓取不重要的頁面,可以鼓勵搜尋引擎將更多資源分配給真正重要的頁面。
- 防止重複內容:可以透過阻止具有相似內容的頁面或由各種參數生成的重複URL來防止SEO問題。
- 指定網站地圖位置:可以在robots.txt檔案中指定網站地圖的位置,以便搜尋引擎輕鬆找到它。
- 簡單且標準化的格式:無需特殊技術知識,可以使用文字編輯器輕鬆編寫和修改。
- 立即生效:上傳檔案後立即生效,搜尋引擎機器人下次訪問時即應用新規則。
使用方法
以下是有效編寫和管理robots.txt檔案的方法。
第1步:理解基本結構 robots.txt檔案基於「User-agent」和「Disallow/Allow 」指令。User-agent指定規則適用於哪個機器人,Disallow指定禁止抓取的路徑,Allow指定允許抓取的路徑。
第2步:識別要阻止的區域 識別網站上不應向搜尋引擎公開的區域。通常包括管理員頁面(/admin)、個人資訊頁面、重複內容、測試頁面、搜尋結果頁面、購物車或結帳頁面。
第3步:編寫robots.txt檔案 使用文字編輯器編寫robots.txt檔案。所有機器人的規則以「User-agent: *」開頭,您還可以為特定機器人指定單獨的規則。
第4步:上傳到根目錄 將編寫好的robots.txt檔案上傳到網站的根目錄。該檔案必須以https://yoursite.com/robots.txt的形式存取。
第5步:測試 使用Google Search Console的robots.txt測試工具驗證檔案是否正確編寫,以及所需的URL是否被正確阻止或允許。
第6步:定期審查 每當網站結構發生變化時,robots.txt檔案也應該更新。定期審查以確保沒有意外阻止重要頁面是很重要的。
範例
範例1:基本robots.txt結構
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /temp/
Allow: /
Sitemap: https://zero-coke.com/sitemap.xml
這是最基本的robots.txt檔案。它指示所有搜尋引擎機器人不要抓取admin、private和temp目錄,並允許其他所有內容。最後指定了網站地圖位置。
範例2:針對特定機器人的規則
# Google機器人規則
User-agent: Googlebot
Disallow: /search/
Disallow: /cart/
Allow: /
# Bing機器人規則
User-agent: Bingbot
Disallow: /admin/
Allow: /
# 圖片搜尋機器人
User-agent: Googlebot-Image
Disallow: /private-images/
Allow: /
# 阻止惡意機器人
User-agent: BadBot
Disallow: /
# 所有其他機器人
User-agent: *
Crawl-delay: 10
Disallow: /admin/
Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-images.xml
此範例展示了如何為不同的機器人應用不同的規則。使用註解(#)來提高可讀性。
範例3:使用萬用字元
User-agent: *
# 阻止所有PDF檔案
Disallow: /*.pdf$
# 阻止帶有特定參數的URL
Disallow: /*?sort=
Disallow: /*?filter=
# 阻止具有特定副檔名的檔案
Disallow: /*.php$
Disallow: /*.inc$
# 但允許特定目錄
Allow: /public/*.pdf$
Sitemap: https://zero-coke.com/sitemap.xml
可以使用萬用字元(*)和路徑結束符($)建立更複雜的規則。
範例4:電子商務網站robots.txt
User-agent: *
# 阻止使用者帳戶相關頁面
Disallow: /account/
Disallow: /login/
Disallow: /register/
Disallow: /checkout/
Disallow: /cart/
# 防止重複內容 - 排序和篩選參數
Disallow: /*?sort=
Disallow: /*?page=
Disallow: /*?filter=
# 搜尋結果頁面
Disallow: /search?
# 管理區域
Disallow: /admin/
# 允許產品頁面(重要!)
Allow: /products/
# 設定抓取延遲(伺服器負載管理)
Crawl-delay: 5
Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-products.xml
Sitemap: https://zero-coke.com/sitemap-categories.xml
這是可用於實際電子商務網站的綜合robots.txt範例。
優缺點
優點
-
提高抓取效率:幫助搜尋引擎不浪費時間和資源抓取不必要的頁面,使它們能夠更專注於重要內容。這對於有效管理抓取預算至關重要,特別是對於大型網站。
-
減少伺服器負載:可以減少由於過度抓取造成的伺服器負載。使用Crawl-delay指令可以控制機器人請求之間的間隔,以保護伺服器資源。
-
簡單實作:無需複雜的程式設計知識,只需一個文字檔案即可輕鬆實作,並且可以立即修改。不需要單獨的資料庫或伺服器配置更改。
缺點
-
不是安全措施:robots.txt僅僅是建議,沒有強制力。惡意機器人或駭客可以忽略此檔案,因此不適合保護敏感資訊。實際上,在robots.txt中指定被阻止的路徑可能會告訴攻擊者隱藏頁面的位置。
-
錯誤的嚴重影響:如果robots.txt檔案編寫錯誤,可能會意外阻止整個網站或從搜尋結果中排除重要頁面。僅一個錯誤的條目如「Disallow: /」就可能使整個網站從搜尋引擎中消失。
-
不會立即生效:即使更新了robots.txt檔案,搜尋引擎也可能不會立即反映。要刪除已索引的頁面,僅靠robots.txt是不夠的,您需要在Google Search Console中單獨請求刪除URL。
常見問題
問:我可以使用robots.txt刪除已索引的頁面嗎? 答:不可以,robots.txt只會阻止新的抓取,不會刪除已索引的頁面。實際上,使用robots.txt阻止會阻止搜尋引擎重新抓取頁面,因此它們無法檢查更新的資訊(例如noindex標籤)。要刪除已索引的頁面,您應該首先向頁面新增noindex中繼標籤,讓搜尋引擎檢查它,然後在robots.txt中阻止它。或者,您可以使用Google Search Console的URL刪除工具。
問:如果沒有robots.txt檔案會怎樣? 答:即使沒有robots.txt檔案,網站也能正常運作,搜尋引擎假定所有頁面都可以抓取。換句話說,一切都是允許的。對於小型網站或希望所有頁面都出現在搜尋結果中的網站,這不是問題,但如果有需要阻止的區域,則必須建立robots.txt檔案。
問:Disallow和noindex有什麼區別? 答:Disallow(robots.txt)阻止搜尋引擎抓取頁面,但如果該頁面從其他地方連結,它仍然可能出現在搜尋結果中(僅包含標題和URL,沒有內容)。另一方面,noindex(中繼標籤)允許抓取但指示該頁面永遠不應顯示在搜尋結果中。要完全從搜尋結果中刪除頁面,您應該使用noindex中繼標籤,而不是robots.txt阻止。
問:萬用字元(*)如何工作? 答:萬用字元()表示零個或多個任意字元。例如,「Disallow: /admin」會阻止所有以admin開頭的路徑,如/admin、/admin/、/admin/users、/administrator。「$」表示URL的結尾,因此「Disallow: /*.pdf$」會阻止所有以.pdf結尾的URL。但是,並非所有搜尋引擎都支援萬用字元,因此它們在主要搜尋引擎(Google、Bing等)中有效,但可能被一些較舊的機器人忽略。