SEO GUIDE
網站專欄 Q & A
技術 SEO

使用.htaccess 來阻止不想要的訪客來你的網頁

使用.htaccess 來阻止不想要的訪客來你的網頁

進入 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 位址

.htaccess
deny from 123.123.123.123

阻擋 IP 範圍

若要阻擋 123.123.123.1123.123.123.255 整段 IP,只要省略最後一組數字即可:

.htaccess
deny from 123.123.123

使用 CIDR 標記阻擋

更精確的做法是使用 CIDR(Classless Inter-Domain Routing)無類別區隔路由標記:

  • 阻擋 123.123.123.1123.123.123.255,使用 123.123.123.0/24
  • 阻擋 123.123.64.1123.123.127.255,使用 123.123.64.0/18
.htaccess
deny from 123.123.123.0/24
2026 實務建議:單純靠 .htaccess 阻擋 IP 已不足以應付現代攻擊。建議搭配 CloudflareSucuri 等 CDN/WAF 服務,在 DNS 層級就阻擋惡意流量,連伺服器都不會收到請求。對於台灣中小企業網站,免費版 Cloudflare 已能阻擋大多數常見威脅。

三、依據 User-Agent 阻擋不良訪客

惡意爬蟲常會使用動態變化的 IP,讓單純的 IP 阻擋失效。但這些爬蟲通常會帶有固定的 User-Agent 字串(即瀏覽器或機器人的「自我介紹」)。針對 User-Agent 阻擋,能一次擋下整類爬蟲。

阻擋單一 User-Agent(使用 RewriteRule)

.htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC]
RewriteRule .* - [F,L]

替代寫法(使用 BrowserMatchNoCase)

.htaccess
BrowserMatchNoCase "Baiduspider" bots

Order Allow,Deny
Allow from ALL
Deny from env=bots

一次阻擋多個 User-Agent

若要同時阻擋多個爬蟲,可以用 | 串連起來:

.htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(Baiduspider|HTTrack|Yandex|SemrushBot|AhrefsBot).*$ [NC]
RewriteRule .* - [F,L]

2026 年該關注的 AI 訓練爬蟲

隨著 ChatGPT、Claude、Perplexity 等 AI 服務崛起,未經授權的 AI 訓練爬蟲成為新一類流量問題。若您不希望內容被 AI 模型訓練使用,可以同時透過 .htaccessrobots.txt 雙重阻擋。

.htaccess - 阻擋 AI 爬蟲
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(GPTBot|ChatGPT-User|ClaudeBot|anthropic-ai|PerplexityBot|Google-Extended|Bytespider|CCBot|FacebookBot).*$ [NC]
RewriteRule .* - [F,L]
注意:阻擋 AI 爬蟲是雙面刃——一方面保護內容不被未經授權使用,另一方面可能讓您的網站無法被 ChatGPT、Perplexity 等 AI 引擎引用,失去 AI 搜尋時代的曝光機會。建議根據網站性質決定:媒體、原創內容站可以擋;想搶 AI 搜尋流量的行銷型網站則建議放行 GPTBotPerplexityBotGoogle-Extended 等。

四、阻擋盜連(不良 Referer)

「盜連(Hotlinking)」是指其他網站直接連結到您的圖片、影片或檔案,使用您的伺服器頻寬卻顯示在他們的網頁上。這不僅消耗頻寬,也可能侵犯您的內容權益。透過阻擋特定來源(Referer),可以有效解決這個問題。

阻擋單一來源網站

.htaccess
RewriteEngine On
RewriteCond %{HTTP_REFERER} example\\\\\\\\\\\\\\\\.com [NC]
RewriteRule .* - [F]

替代寫法(使用 SetEnvIfNoCase)

.htaccess
SetEnvIfNoCase Referer "example.com" bad_referer

Order Allow,Deny
Allow from ALL
Deny from env=bad_referer

阻擋多個來源網站

.htaccess
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 後會延後重新抓取,不會從索引中刪除您的頁面

.htaccess - 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 中含有 botcrawlspider 的請求(涵蓋大多數主流搜尋引擎),但第二個 RewriteCond 允許爬蟲讀取 robots.txt——這樣它們才能讀到您新的爬取規則。

重要警告:503 回應只能用於短期(建議不超過 48 小時)。若超過兩天仍持續回 503,Google 可能會判定為長期伺服器故障,開始從索引中移除您的頁面連結。長期的爬取控制請改用 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
選擇判斷原則:能用 CDN/WAF 解決的就不要動 .htaccess,能用 robots.txt 解決的就不要動 IP 黑名單。.htaccess 過長會拖慢伺服器回應時間——每次請求都要重新解析整份檔案。

七、常見問答 FAQ

修改 .htaccess 後網站出現 500 錯誤怎麼辦?
500 錯誤幾乎都是語法錯誤造成的。立即處理步驟:1. 還原備份——如果修改前有備份,先還原到正常版本;2. 註解除錯——若沒備份,在剛加入的程式碼前加上 # 註解掉,逐行測試是哪一行出問題;3. 檢查常見錯誤——確認 RewriteEngine On 是否啟用、特殊字元(如 . ?)是否正確跳脫為 \\\\\\\\\\\\\\\\. \\\\\\\\\\\\\\\\?、引號是否成對。建議養成習慣:每次修改前先複製一份 .htaccess.bak 備份,這樣出問題隨時能還原。
我該阻擋 ChatGPT、Claude 等 AI 爬蟲嗎?
這是 2026 年最熱門的議題之一,沒有標準答案,取決於您的網站性質:建議阻擋——新聞媒體、付費內容、原創教學、攝影/設計作品站,內容本身就是商品;建議放行——行銷型網站、企業官網、電商產品頁,希望被 AI 引擎引用以獲得品牌曝光與流量;折衷做法——阻擋訓練用爬蟲(如 GPTBotCCBot),但放行答案引擎爬蟲(如 OAI-SearchBotPerplexityBotGoogle-Extended)。Google-Extended 特別重要——這是 Google 用於 Gemini 訓練的爬蟲,但阻擋它不會影響您在 Google 搜尋的排名。
.htaccess 阻擋規則寫了一堆,會不會拖慢網站速度?
。每次有訪客請求網頁時,Apache 都必須重新讀取並解析整份 .htaccess,而且包含子目錄中的所有 .htaccess。當阻擋規則累積到上百條時,每次請求都會增加數毫秒到數十毫秒的延遲。優化建議:1. 大量 IP 阻擋移到防火牆或 Cloudflare2. 合併同類規則——例如把 10 條 RewriteCond 合併成一條用 | 連接的長條件;3. 將靜態規則寫入 Apache 主設定檔(httpd.conf)——主設定檔只在伺服器啟動時讀取一次,效能遠勝 .htaccess。但若您是用虛擬主機(共享主機),無法修改主設定檔,那 .htaccess 就是唯一選擇。
用了 Cloudflare 還需要設定 .htaccess 嗎?
需要,但角色不同。Cloudflare 處理「外圍流量」——大規模 DDoS、知名惡意 IP、Bot 自動識別;.htaccess 處理「網站內部邏輯」——URL 重寫、伺服器層級的細部控制、針對特定行為的精確阻擋。最佳實踐:1. 大規模阻擋交給 Cloudflare——「Firewall Rules」或「WAF」面板設定,反應速度更快;2. 精細邏輯保留在 .htaccess——例如「來自特定 Referer 的請求重導向到首頁」這種有條件式邏輯的場景;3. 注意 IP 白名單——啟用 Cloudflare 後,您的伺服器看到的訪客 IP 都會變成 Cloudflare 的代理 IP,.htaccess 阻擋規則要改用 X-Forwarded-For 標頭取得真實 IP,否則會誤擋。
怎麼知道網站正在被哪些惡意 IP 或爬蟲攻擊?
推薦三個層次的監控方法:1. 伺服器存取日誌——分析 access.log,找出短時間內請求次數異常高的 IP,或大量 404/500 錯誤的來源。可用 awkgrep 等指令統計,或使用 GoAccess(免費的即時日誌分析工具)。2. Cloudflare Analytics——若使用 Cloudflare,後台「Security」面板能直接看到威脅來源國家、Bot 類型、攻擊模式,非常直觀。3. 安全外掛——若用 WordPress,WordfenceSucuri Security等外掛能即時記錄攻擊嘗試並通知。建議每週至少檢查一次日誌,及早發現異常模式並動態調整阻擋規則。

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司