什麼是 robots.txt?| robots.txt 檔案如何運作

robots.txt 檔案列出了網站對機器人行為的偏好。它告訴機器人應該存取哪些網頁,不應該存取哪些網頁。robots.txt 檔案與網路爬蟲最為相關。

學習目標

閱讀本文後,您將能夠:

  • 瞭解 robots.txt 檔案是什麼
  • 瞭解機器人如何與 robots.txt 檔案交互
  • 探索 robots.txt 檔案中使用的通訊協定,包括 Robots 排除通訊協定和網站地圖

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

使用 Cloudflare 防禦憑證填充和內容剽竊等傀儡程式攻擊

什麼是 robots.txt?

OSI 模型

robots.txt 檔案是用於 機器人的一組準則。此檔案包含在大多數網站的來源檔案中。robots.txt 檔案旨在管理網路爬蟲等機器人的活動,但並非所有機器人都會遵循指示。

把 robots.txt 檔案想像成一個貼在健身房、酒吧或社群中心牆上的「行為準則」標誌:標誌本身無權執行列出的規則,但「有素質的」顧客會遵守規則,而「沒有素質的」顧客可能會違反規則並被驅逐。

機器人是與網站和應用程式互動的自動化電腦程式。其中一種機器人稱為網路爬蟲機器人。這些機器人「爬行」網頁並索引內容,以便將此內容顯示在搜尋引擎結果中。robots.txt 檔案有助於管理這些網路爬蟲的活動,以便它們不會使託管網站的網頁伺服器負擔過重或索引不適合公眾檢視的頁面。robots.txt 檔案還可以幫助管理 AI 爬蟲機器人的活動,這些機器人有時會比傳統的網路爬蟲機器人對網頁伺服器造成更大的負擔。

robots.txt 檔案如何工作?

robots.txt 檔案只是一個沒有 HTML 標記代碼的文字檔案(因此副檔名為 .txt)。robots.txt 檔案託管在網頁伺服器上,就像網站上的任何其他檔案一樣。事實上,通常可以透過輸入首頁的完整 URL,然後新增 /robots.txt(如 https://www.cloudflare.com/robots.txt),來檢視任何給定網站的 robots.txt 檔案。該檔案未連結到網站上的其他任何地方,因此使用者不太可能偶然發現它,但大多數網路爬蟲機器人會先尋找此檔案,再爬行網站的其餘部分。

雖然 robots.txt 檔案為機器人提供了指令,但它實際上無法強制執行這些指令。某些機器人(例如網路爬蟲或新聞推播機器人)可能會在檢視網域上的任何其他網頁之前先嘗試存取 robots.txt 檔案,並遵循這些指令。其他機器人則會忽略 robots.txt 檔案,或對其進行處理以尋找被禁止的網頁。

遵守 robots.txt 的網路爬蟲機器人將遵循 robots.txt 檔案中最具體的一組指令。如果檔案中存在相互矛盾的命令,機器人將遵循更精細的命令。

需要注意的一件重要事情是,所有子網域都需要自己的 robots.txt 檔案。例如,雖然 www.cloudflare.com 有自己的檔案,但所有 Cloudflare 子網(blog.cloudflare.com、community.cloudflare.com 等)也需要其自己的檔案。

robots.txt 檔案中使用什麼通訊協定?

在網路中,通訊協定是一種用於提供指令或命令的格式。robots.txt 檔案使用幾種不同的通訊協定。主要通訊協定稱為 Robots 排除通訊協定。這會告訴機器人要避免哪些網頁和資源。針對此通訊協定進行格式化的指令包含在robots.txt 檔案中。

用於 robots.txt 檔案的另一個通訊協定是網站地圖通訊協定。這可以被視為機器人包含通訊協定。網站地圖向網路爬蟲顯示他們可以爬行哪些網頁。這有助於確保網路爬蟲機器人不會錯過任何重要頁面。

robots.txt 檔案範例

以下是 www.cloudflare.com 的 robots.txt 檔案舊版本:

robots.txt 檔案範例

下面我們將分解其含義。

什麼是使用者代理程式?「User-agent: *」是什麼意思?

在網際網路上作用的任何人或程式都將有一個「使用者代理程式」,或者說指派的名稱。對於人類使用者,這包括瀏覽器類型和作業系統版本等資訊,但不包括個人資訊;它可以幫助網站顯示與使用者系統相容的內容。對於機器人,使用者代理程式(理論上)可以幫助網站管理員瞭解哪種機器人正在爬行網站。

在 robots.txt 檔案中,網站管理員能透過為機器人使用者代理程式編寫不同的指令來為特定機器人提供特定指令。例如,如果管理員希望某個頁面顯示在 Google 搜尋結果中而不顯示在 Bing 搜尋中,他們可以在 robots.txt 檔案中包含兩組命令:一組命令前面帶有「User-agent: Bingbot」,另一組前面帶有「User-agent: Googlebot」。

在上面的範例中,Cloudflare 在 robots.txt 檔案中包含了「User-agent: *」。星號表示「萬用字元」使用者代理程式,表示指令適用於每個機器人,而不是任何特定機器人。

常見的搜尋引擎機器人使用者代理程式名稱包括:

Google:

  • Googlebot
  • Googlebot-Image(用於影像)
  • Googlebot-News(用於新聞)
  • Googlebot-Video(用於影片)

Bing

  • Bingbot
  • MSNBot-Media(用於影像和影片)

百度

  • Baiduspider

「Disallow」(不允許)命令在 robots.txt 檔案中是如何運作的?

Disallow 命令是 Robots 排除通訊協定中最常見的命令。它告訴機器人不要存取命令後面的單個或多個網頁。不允許的頁面不一定是「隱藏的」——它們只是對普通的 Google 或 Bing 使用者沒有用,所以不會顯示給他們看。大多數情況下,網站上的使用者如果知道在哪裡可以找到它們,則仍然可以導覽到這些頁面。

Disallow 命令可以透過多種方式使用,上面的範例中顯示了其中幾種方式。

封鎖一個檔案(或者說,一個特定的網頁)

例如,如果 Cloudflare 想要阻止機器人爬行我們的「什麼是機器人?」一文,則會編寫以下命令:

Disallow: /learning/bots/what-is-a-bot/

在「disallow」命令之後,會包含首頁後面的網頁 URL 部分,在本例中為「www.cloudflare.com」。有了這個命令,遵守 robots.txt 指令的機器人將不會存取 https://www.cloudflare.com/learning/bots/what-is-a-bot/,因此該頁面可能不會出現在傳統的搜尋引擎結果中。

封鎖一個目錄

有時,一次封鎖多個頁面比單獨列出所有頁面更有效。如果它們都在網站的同一區段,則 robots.txt 檔案可以封鎖包含它們的目錄。

延續上面的範例:

Disallow: /__mesa/

這意味著不應爬行 __mesa 目錄中包含的所有頁面。

允許完全存取

這樣的命令如下所示:

Disallow:

這告訴機器人它們可以瀏覽整個網站,因為沒有什麼是不允許的。

對機器人隱藏整個網站

Disallow: /

這裡的「/」表示網站階層中的「根」,或所有其他頁面從中分支出來的頁面,因此它包括首頁和從它連結的所有頁面。使用此命令,搜尋引擎機器人可能根本無法爬行該網站。

Robots 排除通訊協定中還有哪些命令?

Allow:正如人們所期望的那樣,「Allow」命令告訴機器人它們被允許存取某個網頁或目錄。此命令表明網站偏好設定允許機器人存取某個特定網頁,同時禁止存取檔案中的其餘網頁。並非所有搜尋引擎都認可此命令。

Crawl-delay:crawl delay 命令旨在阻止搜尋引擎蜘蛛機器人使伺服器負擔過重。它允許管理員指定機器人每個請求應等待的時間(以毫秒為單位)。下面是等待 8 毫秒的 Crawl-delay 命令範例:

Crawl-delay: 8

Google 不認可此命令,但其他搜尋引擎通常認可。對於 Google,管理員可以在 Google Search Console 中變更其網站的爬行頻率。

什麼是網站地圖通訊協定?為什麼它包含在 robots.txt 中?

網站地圖通訊協定可幫助機器人瞭解在爬行網站時要包含哪些內容。

網站地圖是一個 XML 檔案,如下所示:

網站地圖範例

它是網站上所有頁面的機器可讀清單。透過網站地圖通訊協定,指向這些網站地圖的連結可以包含在 robots.txt 檔案中。格式為:「Sitemaps:」,後跟 XML 檔案的網址。您可以在上面的 Cloudflare robots.txt 檔案中看到幾個範例。

雖然網站地圖通訊協定有助於確保網路蜘蛛機器人在爬行網站時不會錯過任何內容,但機器人仍將遵循其一貫的爬行過程。網站地圖不會強制網路爬蟲機器人以不同的方式確定網頁的優先順序。

robots.txt 與機器人管理有何關係?

管理機器人對於保持網站或應用程式的正常執行至關重要,因為即使是善意機器人活動也會加重來源伺服器的負擔,從而導致 Web 資產速度減慢或無法存取。結構良好的 robots.txt 檔案可讓網站針對 SEO 進行最佳化,並且可控制行為良好的機器人活動。robots.txt 檔案對管理惡意機器人流量沒有多大作用。

儘管 robots.txt 很重要,但 Cloudflare 在 2025 年發現,其排名前 10,000 的網站中,只有 37% 擁有 robots.txt 檔案。這意味著很大一部分(或許是大多數)網站並未使用此工具。為了幫助這些網站,尤其是那些不希望其原始內容用於 AI 訓練的網站,Cloudflare 推出了「受管理 robots.txt」服務。這項服務可以根據網站的期望設定,為其建立或更新 robots.txt 檔案。深入瞭解受管理 robots.txt

robots.txt 復活節彩蛋

有時,robots.txt 檔案會包含復活節彩蛋——開發人員包含的幽默訊息,因為他們知道使用者很少看到這些檔案。例如,YouTube robots.txt 檔案中寫道:「Created in the distant future (the year 2000) after the robotic uprising of the mid 90's which wiped out all humans.(在 90 年代中期機器人起義消滅了所有人類之後,在遙遠的未來(2000 年)建立。)」Cloudflare robots.txt 檔案則寫到,「Dear robot, be nice.(親愛的機器人,友好一點。)」


#    .__________________________.
#    | .___________________. |==|
#    | | ................. | |  |
#    | | ::[ Dear robot ]: | |  |
#    | | ::::[ be nice ]:: | |  |
#    | | ::::::::::::::::: | |  |
#    | | ::::::::::::::::: | |  |
#    | | ::::::::::::::::: | |  |
#    | | ::::::::::::::::: | | ,|
#    | !___________________! |(c|
#    !_______________________!__!
#   /                            \
#  /  [][][][][][][][][][][][][]  \
# /  [][][][][][][][][][][][][][]  \
#(  [][][][][____________][][][][]  )
# \ ------------------------------ /
#  \______________________________/

Google 還有一個「humans.txt」檔案,位於以下位置:https://www.google.com/humans.txt

常見問題集

什麼是 robots.txt 檔案?

robots.txt 檔案是網站來源檔案中列出的機器人行為偏好清單。它為善意機器人(例如搜尋引擎網路爬蟲)提供指導,告知它們可以存取網站的哪些部分以及應該避免哪些部分,從而幫助管理流量和控制索引。它還可以列出 AI 爬蟲的規則。

什麼是網路爬蟲?

網路爬蟲是一種自動化機器人,會造訪網頁並將其內容編入搜尋引擎的索引,幫助使用者透過搜尋結果找到內容。

什麼是 Robots 排除協議?

Robots 排除協議是 robots.txt 檔案中指令的格式。該協議告知網路爬蟲不應存取或爬取網站上的哪些網頁或資源。

robots.txt 檔案中的「User-agent」是什麼意思?

「User-agent」指定 robots.txt 檔案中一組指令適用於哪個機器人或哪個機器人群組。「User-agent: *」表示該規則適用於所有機器人。

robots.txt 中的 Disallow 命令是什麼?

Disallow 命令告訴機器人不要爬行網站上的特定頁面或目錄。例如,「Disallow: /private/」告訴機器人不要存取「private」目錄。

robots.txt 中的 Sitemaps 協議是什麼?

Sitemaps 協議允許網站擁有者在 robots.txt 中包含指向其網站地圖 XML 檔案的連結,幫助機器人發現應該爬取哪些頁面。

善意機器人與惡意機器人之間有什麼差異?

良性機器人更有可能遵循 robots.txt 的指令;它們也提供有用的服務。搜尋引擎的網路爬蟲在為內容建立搜尋索引時,通常都會遵守 robots.txt 的規則。惡意機器人通常會忽略 robots.txt,可能擅自剽竊內容、攻擊網站,或傳送大量請求導致網站營運成本增加。

robots.txt 中的 Crawl-delay 命令有什麼作用?

Crawl-delay 命令告訴機器人在兩次請求之間需要等待多長時間,以避免伺服器過載。並非所有機器人都會遵守此命令:例如,Googlebot 就不遵守,儘管 Google 不過網站管理員可以透過 Google Search Console 設定類似的規則來控制爬取頻率。

robots.txt 如何影響 SEO 最佳化?

結構良好的 robots.txt 檔案可以告知搜尋引擎爬蟲機器人需要索引哪些頁面,協助防止索引非必要或重複的內容,從而提升 SEO。此外,robots.txt 還可以幫助網路爬蟲透過 Sitemaps 找到所有需要索引的頁面。