如何通过 .htaccess 屏蔽某些 IP 访问网站

做过网站的人都知道,总会有一些心存不良的人,想要在你的网站发布垃圾评论,试图破解你的网站后台密码,想要找到你网站的漏洞,或者想要抓取你网站的内容。

如何通过 .htaccess 屏蔽某些 IP 访问网站
如何通过 .htaccess 屏蔽某些 IP 访问网站

如果您的 Web 服务器使用 Apache ,可以使用 .htaccess 文件屏蔽特定 ip 访问网站。下面我们就来介绍一下如何通过 .htaccess 屏蔽某些 IP 访问网站。

阻止特定的 IP 地址

要通过 .htaccess 屏蔽某些 IP 访问网站,只需要将下面的规则添加到网站根目录下的 .htaccess 文件:

Deny from 123.123.123.123

将示例中的 IP 地址更改为您要阻止的地址,然后就可以阻止对应的 ip 访问网站了。

阻止特定 IP 范围

要阻止特定 IP 范围,请将以下内容添加到网站根目录下的 .htaccess 文件中:

Deny from 123.123.123.123/255.255.255.0

然后将示例 IP 地址和网络掩码值更改为您要阻止的域。

阻止多个 IP 地址

如果要阻止多个 IP 地址,可以通过下面的方式:

Deny from 111.111.111.111 222.222.222.222 333.333.333.333

上面示例的命令,将会屏蔽指定的三个 IP:111.111.111.111222.222.222.222333.333.333.333。将该行添加到根目录下的 .htaccess 文件中。

屏蔽整个 IP 段

也可以阻止整个 IP 段范围。例如下面的示例,我们阻止了以  123.123 开头的 IP:

Deny from 123.123

要阻止多个 IP 段范围,我们可以这样做:

Deny from 111 222.222 333.333.333

这样就可以阻止相应的 IP 范围。

根据 CIDR 阻止 IP

如果您知道要阻止的 IP 的 CIDR ,则可以使用以下语法:

Deny from 123.123.123.0/24

然后将该规则添加到网站根目录下的 .htaccess 文件中。

阻止 IPv6 地址

如果想通过 .htaccess 阻止一个 IPv6 地址,可以按照下面的语法:

Deny from 2001:0db8:0000:0042:0000:8a2e:0370

还可以使用以下任一表示法,具体取决于目标:

Deny from 2001:0db8:0000:0042
Deny from 2001:0db8:0000:0042:0000/10

根据正则表达式阻止 IP

此屏蔽 IP 方法通过/RewriteCond/RewriteRule指令,屏蔽符合正则表达式的 IP:

<IfModule mod_rewrite.c>
	RewriteCond %{REMOTE_ADDR} ^214.53.25.(6[4-9]|7[0-9]|8[0-9]|9[0-9])$ [OR]
	RewriteCond %{REMOTE_ADDR} ^214.53.25.1([0-1][0-9]|2[0-8])$
	RewriteRule .* - [F]
</IfModule>

基于 IP 地址的重定向

我们还可以将特定 IP 重定向到其他位置,而不是屏蔽该 IP。以下是使用 Apache mod_rewrite的方法:

<IfModule mod_rewrite.c>
	RewriteCond %{REMOTE_ADDR} ^111\.111\.111\.111$
	RewriteRule .* /index.php [R=301,L]
</IfModule>

这是另一个帮助说明该方法的示例:

<IfModule mod_rewrite.c>
	RewriteCond %{REMOTE_HOST} 123\.123\.123\.123
	RewriteCond %{REQUEST_URI} /requested-page\.html
	RewriteRule .* /just-for-you.html [R=301,L]
</IfModule>

在这里,我们首先检查 IP 和其请求的 URI。如果匹配,则请求将被发送到/just-for-you.html页面。要使用此重定向规则,只需把 IP 地址、请求页面和重定向页面更改为实际内容。然后,将代码复制并粘贴到网站根目录下的 .htaccess 文件中。

阻止特定的请求类型

假设只想阻止某些访问者,通过网站上的表单发布内容。这可以通过使用 Apache 的<Limit>容器来完成:

<Limit POST>
	Order Allow,Deny
	Allow from all
	Deny from 123.123.123.123
</Limit>

注意<Limit>容器中指定的POST请求。下面是所有 Apache 请求类型的列表。

GET
PUT
POST
DELETE
CONNECT
OPTIONS
TRACE
PATCH
PROPFIND
PROPPATCH
MKCOL
COPY
MOVE
LOCK
UNLOCK
VERSION_CONTROL
CHECKOUT
UNCHECKOUT
CHECKIN
UPDATE
LABEL
REPORT
MKWORKSPACE
MKACTIVITY
BASELINE_CONTROL
MERGE
INVALID

下面是一个相反的例子,如果只允许从我们自己的 IP 地址发帖,同时拒绝其他人的POST请求:

<Limit POST>
	Order Deny,Allow
	Deny from all
	Allow from 111.111.111.111
</Limit>

完整的规则

虽然可以只添加一行简写的规则在 .htaccess 文件中,例如Deny from 123.123,但也可以使用完整的规则。例如下面的例子:

Order Allow,Deny
Allow from all
Deny from 123.123.123.123/26

我们也可以更改顺序:

Order Deny,Allow
Deny from all
Allow from 111.111.111.111

这里我们首先拒绝所有人的访问,然后只允许指定的地址访问。将这种语法与<Limit>容器结合起来,我们可以做更多的事情,比如只允许自己的 IP 地址的 POST 和 PUT 请求。例如:

<Limit POST PUT>
	Order Deny,Allow
	Deny from all
	Allow from 111.111.111.111
</Limit>

总结

通过上面的内容,我们介绍了如何通过 .htaccess 屏蔽某些 IP 访问网站。但是要提醒大家,在修改.htaccess 文件之前一定要做好备份,在添加任何新规则之前进行测试。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/webmaster/how-to-block-ip-address-with-htaccess/

(0)
牛奇网牛奇网
上一篇 2022年6月1日 下午8:21
下一篇 2022年6月2日 下午2:48

相关推荐

发表回复

登录后才能评论
2024年独立站建站最佳服务器主机Cloudway黑五大促前4个月40%OFF,立即获取优惠