.htaccess:阻止除一个国家/地区以外的所有国家/地区

时间:2016-03-15 10:03:16

标签: apache .htaccess

我正在尝试阻止所有国家/地区访问,除非使用.htaccess。

我现在所拥有的是

RewriteEngine on
<Directory nameOfDirectory>
Order Allow, Deny
Allow IP range 1
Allow IP range 2
</Directory>

我一直收到内部服务器错误。我做错了什么?请注意,有问题的国家实际上有超过500个IP范围。

当然,除了.htaccess之外还有更好的方法可以做到这一点,我很满意。

更新:Apache错误日志

[Tue Mar 15 06:29:37.308444 2016] [core:alert] [pid 14435] [client xxx.xxx.6.2:59534] /var/www/.htaccess: <Directory not allowed here

1 个答案:

答案 0 :(得分:0)

我没试过这个,但是如何先拒绝并添加Deny from all;像这样的东西:

<Directory "nameOfDirectory">
    Order deny,allow
    Deny from all
    Allow from 192.168.0.1
    Allow from 192.168.0.2
    Allow from 10.0.0.1
    Allow from 10.0.0.2
    Allow from 127.0.0.1
</Directory>

您的error.log告诉您,您无权使用<Directory>。因此,您可以允许它(在目录的apache配置中使用AllowOverride Authconfig FileInfo Options)或只删除目录中的htaccess文件以保护和删除<directory>标记。

这将在您要保护的目录中起作用:

    Order deny,allow
    Deny from all
    Allow from 192.168.0.1
    Allow from 192.168.0.2
    Allow from 10.0.0.1
    Allow from 10.0.0.2
    Allow from 127.0.0.1