進入 2026 年,網站面臨的惡意流量比過去任何時候都更嚴峻——不只是傳統的內容盜爬、廣告機器人、與盜連流量,還新增了大量未經授權的 AI 訓練爬蟲(如 GPTBot、ClaudeBot、PerplexityBot、Bytespider 等)。這些訪客可能拖垮伺服器、消耗頻寬、竊取內容,甚至影響 SEO 排名。.htaccess 是 Apache 伺服器上一個強大的隱藏設定檔,能在「進入網頁之前」就攔截這些不速之客。本文將完整介紹從 IP 阻擋、User-Agent 過濾、防盜連到暫時性限速等實務做法。
一、什麼是 .htaccess?
.htaccess(HyperText Access)是 Apache 伺服器上的分散式設定檔。它放在網站根目錄或任何子目錄中,能控制該目錄與所有子目錄的存取權限、URL 重寫、錯誤頁面、快取規則等。每當有訪客請求網頁時,Apache 都會優先讀取 .htaccess 並執行其中的規則。
.htaccess 前請務必先備份原始檔案。語法錯誤可能導致整個網站出現 500 Internal Server Error。建議在測試環境先驗證規則正確後再上線正式環境。
二、使用 IP 位址阻擋
當網站遭遇單一或少數惡意 IP 攻擊時,IP 阻擋是最直接有效的做法。例如發現某些 IP 頻繁嘗試登入後台、發送垃圾留言或大量爬取資料時,可以直接從伺服器層級擋下。
阻擋單一 IP 位址
deny from 123.123.123.123
阻擋 IP 範圍
若要阻擋 123.123.123.1 至 123.123.123.255 整段 IP,只要省略最後一組數字即可:
deny from 123.123.123
使用 CIDR 標記阻擋
更精確的做法是使用 CIDR(Classless Inter-Domain Routing)無類別區隔路由標記:
- 阻擋
123.123.123.1~123.123.123.255,使用123.123.123.0/24 - 阻擋
123.123.64.1~123.123.127.255,使用123.123.64.0/18
deny from 123.123.123.0/24
.htaccess 阻擋 IP 已不足以應付現代攻擊。建議搭配 Cloudflare、Sucuri 等 CDN/WAF 服務,在 DNS 層級就阻擋惡意流量,連伺服器都不會收到請求。對於台灣中小企業網站,免費版 Cloudflare 已能阻擋大多數常見威脅。
三、依據 User-Agent 阻擋不良訪客
惡意爬蟲常會使用動態變化的 IP,讓單純的 IP 阻擋失效。但這些爬蟲通常會帶有固定的 User-Agent 字串(即瀏覽器或機器人的「自我介紹」)。針對 User-Agent 阻擋,能一次擋下整類爬蟲。
阻擋單一 User-Agent(使用 RewriteRule)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC]
RewriteRule .* - [F,L]
替代寫法(使用 BrowserMatchNoCase)
BrowserMatchNoCase "Baiduspider" bots Order Allow,Deny Allow from ALL Deny from env=bots
一次阻擋多個 User-Agent
若要同時阻擋多個爬蟲,可以用 | 串連起來:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(Baiduspider|HTTrack|Yandex|SemrushBot|AhrefsBot).*$ [NC]
RewriteRule .* - [F,L]
2026 年該關注的 AI 訓練爬蟲
隨著 ChatGPT、Claude、Perplexity 等 AI 服務崛起,未經授權的 AI 訓練爬蟲成為新一類流量問題。若您不希望內容被 AI 模型訓練使用,可以同時透過 .htaccess 與 robots.txt 雙重阻擋。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(GPTBot|ChatGPT-User|ClaudeBot|anthropic-ai|PerplexityBot|Google-Extended|Bytespider|CCBot|FacebookBot).*$ [NC]
RewriteRule .* - [F,L]
GPTBot、PerplexityBot、Google-Extended 等。
四、阻擋盜連(不良 Referer)
「盜連(Hotlinking)」是指其他網站直接連結到您的圖片、影片或檔案,使用您的伺服器頻寬卻顯示在他們的網頁上。這不僅消耗頻寬,也可能侵犯您的內容權益。透過阻擋特定來源(Referer),可以有效解決這個問題。
阻擋單一來源網站
RewriteEngine On
RewriteCond %{HTTP_REFERER} example\\\\\\\\\\\\\\\\.com [NC]
RewriteRule .* - [F]
替代寫法(使用 SetEnvIfNoCase)
SetEnvIfNoCase Referer "example.com" bad_referer Order Allow,Deny Allow from ALL Deny from env=bad_referer
阻擋多個來源網站
RewriteEngine On
RewriteCond %{HTTP_REFERER} example\\\\\\\\\\\\\\\\.com [NC,OR]
RewriteCond %{HTTP_REFERER} example\\\\\\\\\\\\\\\\.net [NC]
RewriteRule .* - [F]
五、暫時性阻擋搜尋引擎爬蟲(503 回應)
某些情況下,您不想直接傳送 403 拒絕訊息給訪客,因為這會讓搜尋引擎以為網站長期失效,可能影響 SEO。例如:
- 網站進行重大改版、資料庫遷移中
- 遇到大型行銷活動,伺服器流量爆量
- 暫時不希望搜尋引擎抓取,但又不想流失既有索引
這時應該使用 503 Service Unavailable 回應,告訴搜尋引擎:「這個請求只是暫時性被拒絕,請稍後再來」。Google 看到 503 後會延後重新抓取,不會從索引中刪除您的頁面。
ErrorDocument 503 "Site temporarily disabled for crawling"
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(bot|crawl|spider).*$ [NC]
RewriteCond %{REQUEST_URI} !^/robots\\\\\\\\\\\\\\\\.txt$
RewriteRule .* - [R=503,L]
上述程式碼的邏輯:抓取所有 User-Agent 中含有 bot、crawl、spider 的請求(涵蓋大多數主流搜尋引擎),但第二個 RewriteCond 允許爬蟲讀取 robots.txt——這樣它們才能讀到您新的爬取規則。
robots.txt。詳見:如何使用 robots.txt 阻止搜尋引擎爬取你的網頁
六、2026 年的綜合防護策略
單純依賴 .htaccess 已不足以應付當代攻擊。建議採取「多層防護」策略:
- CDN / WAF 層(最外層):Cloudflare、Sucuri、Akamai 等服務在 DNS 層級阻擋 99% 的惡意流量,連伺服器都不會收到請求。對中小企業而言,免費版 Cloudflare 就能擋下大量機器人攻擊。
- 伺服器層(.htaccess):處理 CDN 漏網之魚,主要用於針對性的 IP 黑名單、User-Agent 過濾、防盜連、503 暫時阻擋等場景。
- 應用程式層:在 PHP、Node.js 等程式碼中加入速率限制(Rate Limiting)、CAPTCHA 驗證、登入失敗鎖定機制,處理需要邏輯判斷的攻擊。
-
robots.txt 層:對「善意但不需要」的爬蟲(如 SEO 工具的 SemrushBot、AhrefsBot),用
robots.txt委婉拒絕即可,不必動用.htaccess。
.htaccess,能用 robots.txt 解決的就不要動 IP 黑名單。.htaccess 過長會拖慢伺服器回應時間——每次請求都要重新解析整份檔案。
七、常見問答 FAQ
修改 .htaccess 後網站出現 500 錯誤怎麼辦?
# 註解掉,逐行測試是哪一行出問題;3. 檢查常見錯誤——確認 RewriteEngine On 是否啟用、特殊字元(如 . ?)是否正確跳脫為 \\\\\\\\\\\\\\\\. \\\\\\\\\\\\\\\\?、引號是否成對。建議養成習慣:每次修改前先複製一份 .htaccess.bak 備份,這樣出問題隨時能還原。
我該阻擋 ChatGPT、Claude 等 AI 爬蟲嗎?
GPTBot、CCBot),但放行答案引擎爬蟲(如 OAI-SearchBot、PerplexityBot、Google-Extended)。Google-Extended 特別重要——這是 Google 用於 Gemini 訓練的爬蟲,但阻擋它不會影響您在 Google 搜尋的排名。
.htaccess 阻擋規則寫了一堆,會不會拖慢網站速度?
.htaccess,而且包含子目錄中的所有 .htaccess。當阻擋規則累積到上百條時,每次請求都會增加數毫秒到數十毫秒的延遲。優化建議:1. 大量 IP 阻擋移到防火牆或 Cloudflare;2. 合併同類規則——例如把 10 條 RewriteCond 合併成一條用 | 連接的長條件;3. 將靜態規則寫入 Apache 主設定檔(httpd.conf)——主設定檔只在伺服器啟動時讀取一次,效能遠勝 .htaccess。但若您是用虛擬主機(共享主機),無法修改主設定檔,那 .htaccess 就是唯一選擇。
用了 Cloudflare 還需要設定 .htaccess 嗎?
.htaccess 處理「網站內部邏輯」——URL 重寫、伺服器層級的細部控制、針對特定行為的精確阻擋。最佳實踐:1. 大規模阻擋交給 Cloudflare——「Firewall Rules」或「WAF」面板設定,反應速度更快;2. 精細邏輯保留在 .htaccess——例如「來自特定 Referer 的請求重導向到首頁」這種有條件式邏輯的場景;3. 注意 IP 白名單——啟用 Cloudflare 後,您的伺服器看到的訪客 IP 都會變成 Cloudflare 的代理 IP,.htaccess 阻擋規則要改用 X-Forwarded-For 標頭取得真實 IP,否則會誤擋。
怎麼知道網站正在被哪些惡意 IP 或爬蟲攻擊?
access.log,找出短時間內請求次數異常高的 IP,或大量 404/500 錯誤的來源。可用 awk、grep 等指令統計,或使用 GoAccess(免費的即時日誌分析工具)。2. Cloudflare Analytics——若使用 Cloudflare,後台「Security」面板能直接看到威脅來源國家、Bot 類型、攻擊模式,非常直觀。3. 安全外掛——若用 WordPress,Wordfence、Sucuri Security等外掛能即時記錄攻擊嘗試並通知。建議每週至少檢查一次日誌,及早發現異常模式並動態調整阻擋規則。