使用.htaccess 来阻止不想要的访客来你的网页

ernestwang 767 0

在这个文章中,我们将会讨论「如何藉由.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的索引删除你的网页连结。

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了