如何在Apache 2.4上的.httaccess中阻止Ip

我已经升级了Apache 2.4,并想要阻止一个IP,这可以通过在Apache 2.2上的.httaccess中使用以下来完成

Order Deny,Allow Deny from 50.62.136.183 

但是,我怎样才能在Apache 2.4的.httaccess中实现相同的function

Apache 2.4对授权用户的方式做了很大的改变。

Apache 2.4中的授权组件现在可以使用之前仅用于身份validation的Require语法。 此更改简化了定义授权订单的方式。 2.4之前的规则设置相当复杂。 2.4中的规则更合乎逻辑,指定了默认值,然后指定了exception。

您要求接受stream量的默认设置,但希望阻止特定的IP,规则如下所示:

 Require all granted Require not ip 50.62.136.183 

此规则将设置接受所有IP的默认策略,除了来自111.111.111.111 IP地址的任何请求。

Apache 2.4之前和之后的例子

Apache 2.2

 <files somefile.php> order allow,deny deny from 50.62.136.183 </files> 

Apache 2.4

 <Files somefile.php> Require all granted Require not ip 50.62.136.183 </Files> 

不要忘记阻止访问您的.htaccess文件或快速谷歌search我的渲染您的网站易受攻击。 我已经包括2.4前和2.4后configuration。

Apache 2.2

 # Prevent .htaccess files from being spidered or viewed via a web browser. <FilesMatch "^\.ht"> Order allow,deny Deny from all satisfy all </FilesMatch> 

Apache 2.4

 # Prevent .htaccess files from being spidered or viewed via a web browser. <Files ".ht*"> Require all denied </Files> 

这是.htaccess文件的另一个可接受的语法:

 <RequireAll> Require all granted Require not ip 50.62.136.183 </RequireAll> 

这个语法推荐用于2.4,因为顺序 – 拒绝语法不会总是起作用,可以在这里看到http://httpd.apache.org/docs/2.4/upgrading.html

访问控制的configuration已经改变,你可以在http://httpd.apache.org/docs/2.4/upgrading.html#access中阅读,所以你应该使用Require指令&#xFF1A;

 Require all granted Require not ip 50.62.136.183 

如果你添加到你的.htaccess文件(或者一个Directory部分),它应该按照你的要求工作。

要通过IP地址拒绝访问者,您可以在.htaccess中input以下内容

 Order Deny,Allow Deny from 198.51.100.5 

阻止IP范围示例:

 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^00\.00\.00\. RewriteRule ^ - [F] 

将不需要的访问者redirect到另一个url:

 RewriteEngine on RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?169.166.0.5.*$ [NC] RewriteRule .* 198.51.100.6 [L] 

注意:给定的IP地址是示例IP。