什麼是網頁設計?背景
認識網頁設計Q & A

認識網頁設計 - SEO搜尋引擎最佳化

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

在這個文章中,我們將會討論「如何藉由.htaccess阻止不想要的訪客或是機器人訪問你的網頁」

.htaccess是在伺服器中的隱藏檔案,它可以控制網頁與其他工具之間存取的權限。

按照下面步驟,我們可以通過幾種不同的方法,可以阻擋不需要的訪客進入你的網頁。

編輯你的.htaccess檔案

要使用任何的方式去阻擋一個不需要的訪客進入你的網頁,你必須要編輯.htaccess檔案。

使用IP位址阻擋

網頁的問題,很可能是一組或是多組IP位址造成的,在這樣的情況下,你可以很簡單的編輯設計一些程式碼,從你的網頁權限來阻擋這些有問題的IP位址。

阻擋單一IP位址

如果只想阻擋一組IP或是多個不同範圍內的IP,你可以使用設計編輯以下程式碼

deny from 123.123.123.123

阻擋多個IP位址

阻擋一個範圍的IP,例如123.123.123.1 - 123.123.123.255,你也可以把最後一組位元刪除。

deny from 123.123.123

你也可以使用CIDR(Classless Inter-Domain Routing) 無類別區隔路由標記方式來阻擋IP。

阻擋範圍123.123.123.1 - 123.123.123.255, 使用 123.123.123.0/24

阻擋範圍123.123.64.1 - 123.123.127.255, 使用 123.123.123.0/18

deny from 123.123.123.0/24

依據User-Agent string 來阻擋不良用戶

一些惡意的用戶會使用不同的IP傳送請求,但是在這些全部請求之中,只使用相同的User-Agent,在這種情況下,你可以只阻擋用戶的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

如果你想一次阻擋多個User-Agent,你可以設計編輯以下程式碼。

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

或者你也可以使用BrowserMatchNoCase 伺服器指令,設計編輯以下程式碼

BrowserMatchNoCase "Baiduspider" bots BrowserMatchNoCase "HTTrack" bots BrowserMatchNoCase "Yandex" bots Order Allow,Deny Allow from ALL Deny from env=bots

阻擋不良參照連結(盜連)

Block a single bad referer

阻擋單個參照連結

如果你只想阻擋單個參照連結例如:example.com ,你可以使用RewriteRule,設計編輯以下程式碼

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 Block multiple bad referers

阻擋多個參照連結

如果你想阻擋多個參照連結例如:example.com、example.net,你可以設計編輯以下程式碼。

RewriteEngine On RewriteCond %{HTTP_REFERER} example.com [NC,OR] RewriteCond %{HTTP_REFERER} example.net [NC] RewriteRule .* - [F]

或者你也可以使用SetEnvIfNoCase 伺服器指令,設計編輯以下程式碼

SetEnvIfNoCase Referer "example.com" bad_referer SetEnvIfNoCase Referer "example.net" bad_referer Order Allow,Deny Allow from ALL Deny from env=bad_referer

暫時阻止不良搜尋機器人

在某些情況下,你或許不想要直接傳送403訊息網頁給訪客,因為那是個(長時間)拒絕他進入網頁的訊息。

舉個例子來說,例如當天有個行銷活動,網頁將會產生大量的的網路流量,在這期間,你不想要讓一些好的搜尋引擎機器人像是GOOGLE或是雅虎,進入你的網頁並檢索網頁,因為有可能會使用額外的流量來增加伺服器的負擔

以下程式碼,將可以用503回應的方式來設定基本的錯誤網頁訊息,這是用預設的方式去告訴搜尋引擎,這個請求只是暫時性的被阻擋並且一段時間後可以再嘗試。503回應與403回應是不同的,503是通過430回應來暫時性的拒絕進入權限,像是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]

當你注意到一些新的搜尋機器人在爬(抓取)你的網頁太頻過頻繁,並且你想要阻擋他們或是讓他們不要那麼頻繁抓取,可以使用robots.txt檔案來處理,是一個不錯的方式。

一樣的,它會以503方式回應請求,直到它們讀取到你新的robots.txt規則,在來執行它。你可以閱讀【「如何使用robots.txt阻止搜尋引擎爬(抓取)你的網頁?」

以下代碼會抓取User-Agent的任何請求,其中包含搜尋機器人、搜尋爬蟲、搜尋蜘蛛,大多數主要的搜尋引擎都是符合的,第二個RewriteCond是允許這些機器人仍然可以請求robots.txt檔案來核對最新的規則,但是任何其他的請求都很單純的得到503網頁回應或是"Site temporarily disabled for crawling"。

常態來說,妳在開始使用兩天後,還不想刪除503回應的話,GOOGLE可能會開始去理解成長時間的伺服器中斷,並且會開始從GOOGLE的索引刪除你的網頁連結。


歡迎推廣本文,請務必連結(LINK)本文出處