做过网站的人都知道,总会有一些心存不良的人,想要在你的网站发布垃圾评论,试图破解你的网站后台密码,想要找到你网站的漏洞,或者想要抓取你网站的内容。
如果您的 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.111
、222.222.222.222
和 333.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 方法通过/
指令,屏蔽符合正则表达式的 IP:RewriteCond
/RewriteRule
<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/