我已经升级了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指令:
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。