# gcm.org.tw robots.txt # 2026-08-19 改為實體檔案。原本由 WordPress 動態產生,代表每次被抓 robots.txt # 都要啟動一次 WordPress(實測要 6-9 秒);改成實體檔後由伺服器直接送出。 # 要恢復成 WordPress 動態產生,刪除本檔即可。 # ── Meta 的 AI 訓練爬蟲:封鎖 ── # 2026-08-19 依存取紀錄實測:24 小時內送出 284,975 次頁面請求, # 是 Googlebot 的 100 倍、佔全部爬蟲流量的 96%,且絕大多數重複抓同一個首頁。 # 修復前每一筆都會啟動一次完整的 WordPress,是主機 CPU 被吃光的主因。 # 注意:這裡封的是 meta-externalagent(AI 訓練用), # 不是 facebookexternalhit(分享連結時抓預覽圖用)—— 後者必須保持放行, # 否則臉書、Messenger 分享本站連結會沒有預覽。 User-agent: meta-externalagent Disallow: / # 2026-08-21:Meta 改用新的 UA meta-webindexer 繼續抓,8/20 單日 217,572 次, # 且 99.86% 是 /?shop/items// 這種不存在的垃圾網址。一併封鎖。 # 同樣不影響 facebookexternalhit(分享預覽)。 User-agent: meta-webindexer Disallow: / # ── AI 檢索爬蟲:2026-09-09 放寬 30 → 5 ── # 原本的 30 是 2026-08-19 Meta 爬蟲壓垮主機時一併設的預防措施。 # 同日補上的 .htaccess 快取直送規則已讓匿名請求不進 PHP(實測 0.03-0.18 秒), # 當初的成本理由不再成立,而業務目標是要被 AI 引擎檢索到。 # # 實測(2026-09-09,9 月 1-9 日存取紀錄,這三支合計進 PHP 2,417 次): # GPTBot 請求間隔 98.5% 落在 19-21 秒,集中在 20 秒 → 用自己的節奏,未理會 30 # ClaudeBot 77.4% 的間隔 ≤1 秒(爆量式) → 未理會 # PerplexityBot 30.5% ≤1 秒、43.4% >5 分鐘(爆量式) → 未理會 # 結論:Crawl-delay 是非標準指令,這三支實際上都沒有遵守, # 所以放寬與否對抓取速率沒有影響。保留這幾行是為了留一個表態與調節的位置, # 真的需要壓制時要用 .htaccess 擋,不能靠這裡(見 meta-webindexer 那次教訓)。 User-agent: GPTBot Crawl-delay: 5 User-agent: ClaudeBot Crawl-delay: 5 # ── 純訓練用爬蟲:維持限速(對本站無檢索效益)── User-agent: CCBot Crawl-delay: 30 User-agent: Bytespider Crawl-delay: 30 User-agent: Amazonbot Crawl-delay: 30 User-agent: PerplexityBot Crawl-delay: 5 # ── SEO 工具爬蟲:限速(對本站無實質效益,但不封鎖)── User-agent: MJ12bot Crawl-delay: 30 User-agent: AhrefsBot Crawl-delay: 30 User-agent: SemrushBot Crawl-delay: 30 User-agent: DotBot Crawl-delay: 30 # ── 搜尋引擎與分享預覽:維持原本設定,不可封鎖 ── # Googlebot / bingbot / Applebot / facebookexternalhit 都走這一段。 User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php # ── 入侵期垃圾網址:禁止抓取(2026-09-27 新增)── # 為什麼要在已經回 410 之外再封 robots.txt: # 這些網址是**參數化的無限組合**(/hiroshi.php?class/3947-4250000039.html), # 不是一批固定網址。實測 2026-09-20~26 Googlebot 抓了 16,714 次 410, # 其中 13,773 個是**唯一**網址、平均只重抓 1.1 次,而 9/20 之後才首次出現的 # 就有 12,979 個 —— 換句話說 Google 永遠消化不完,「等它退索引」是錯的前提。 # 同期爬取預算 70% 花在 410 上,只有 28% 花在真正的內容。 # # 封鎖前驗證過三件事(缺一不可,順序不能顛倒): # 1. 已退索引:抽樣 inspect 得 "URL is unknown to Google" 與 "Not found (404)", # 所以「封 robots.txt 會讓已索引網址卡在索引裡」這個陷阱在此不成立。 # 2. 不會誤封:sitemap_index.xml 全部 1,604 筆網址,含這些字樣的是 0 筆。 # 3. referer 全部是 "-":不是站內連結或外部連結帶來的,是 Google 自己的歷史佇列, # 所以站上沒有東西需要一起修。 # # ⚠ 用 /* 前綴是刻意的:/item.php 只比對開頭,涵蓋不到 /wp-content/item.php # 與 /wp-includes/item.php(存取紀錄裡兩者都出現過)。 # ⚠ Google 的 robots.txt 路徑比對**區分大小寫**,所以大小寫變體要分別列 # (存取紀錄有 Item.PHP 8 次、ITEM.php 1 次)。 # ⚠ /review/ 刻意**不封** —— 單篇已退索引(Not found),但彙整頁 /review/ 仍是 # "Submitted and indexed" 且最後檢索停在 2026-07-27,還沒回來看過 410。 # 封了它會永久卡在索引裡。它只佔 410 流量的 5%,留著讓 Google 來收屍。 # 等 /review/ 變成未收錄之後,再把它加進這一段。 # # ⚠ 2026-10-23 拿掉 item.php 的三行(/*item.php、/*Item.PHP、/*ITEM.php),刻意的,不要加回去: # 封鎖後 Google 看不到 410,外部垃圾連結不斷餵新網址,GSC「已建立索引,但遭到 robots.txt 封鎖」 # 從 0 漲到 1.18 萬(10/13),幾乎全是 item.php?x=…。必須讓 Google 抓到 410 才會退索引。 # .htaccess 的 410 規則仍在。等 GSC 該類降到接近 0 再評估是否封回。 # ⚠ 2026-11-05 同理拿掉 /*hiroshi.php、/*Hiroshi.PHP、/*?shop,刻意的,不要加回去: # GSC 匯出「遭 robots 封鎖」1.08 萬筆抽樣中 19% 是 hiroshi.php?shop/items/… 與 /?shop, # inspect 為 Indexed, though blocked,不解封就永遠卡在索引裡。.htaccess 的 410 仍在。 # /*?class 與 /upload/ 抽樣 0 筆,照封。 Disallow: /*?class Disallow: /upload/ Sitemap: https://gcm.org.tw/sitemap_index.xml