使用 htaccess 限制 IP

Posted

技术标签:

【中文标题】使用 htaccess 限制 IP【英文标题】:IP restriction with htaccess 【发布时间】:2010-10-10 06:50:10 【问题描述】:

我想限制整个网站,使只有两个 IP 可以进入该网站。我的 .htaccess 中有以下内容(在站点的根目录):

ErrorDocument 403 http://www.example.com/views/error403.html

Order Deny,Allow
Deny from all
Allow from 311.311.311 322.322.322.322

ErrorDocument 404 /views/error404.html
ErrorDocument 500 views/error500.html

(显然,这些是假 IP,在我的 .htaccess 中它们是正确的 IP)

如您所见,我只允许 322.322.322.322 和来自 311.311.311.0/24 的所有 IP,而拒绝其他人。我想要的是,当任何人从另一个 IP 进入该站点时,他将查看 error403.html 页面。

过滤器工作正常,但重定向不正常。当我尝试从拒绝 IP 进入站点时,我看到一条 Apache 消息:

Found
The document has moved here

“这里”是指向 error403.html 的链接。

我认为我什至限制了 error403.html 页面。

如何进行此限制,但允许查看错误页面?我是否应该将 error403.html 页面移动到另一个目录(即 /views/error/ )并将其他 .htaccess 放入其中,允许该文件中的所有 IP?

提前谢谢你!

【问题讨论】:

【参考方案1】:

是的,您已经回答了自己的问题。 :) 将所有未受保护的页面移动到另一个目录中,该目录具有自己的.htaccess,其中包含正确的AllowDeny

【讨论】:

我想知道是否存在另一种更好的形式来解决这个问题,但你已经证实了我的怀疑;我会用另一个目录-htaccess 对来做。谢谢弗拉德! 您总是可以从 httpd.conf 执行此操作,并使用更高级的规则来确定哪些目录受到影响,哪些不受影响,但坦率地说,除非您在使用 .htaccess 时遇到性能问题(除非您每秒处理数百或数千个请求,否则您不会这样做。) 而且这个站点托管在一个共享机器上,我无法更改 httpd.conf,因此使用 .htaccess 的解决方案非常适合。 弃用所有这些旧结果会非常好,因为它们不再适用,

以上是关于使用 htaccess 限制 IP的主要内容,如果未能解决你的问题,请参考以下文章

使用 htaccess,如何限制查看目录内容,但允许服务器使用内容?

htaccess - 限制 url slug 中的单词数

如何使用 .htaccess 或 php.ini 增加上传文件大小限制? [复制]

使用.htaccess文件增加wordpress中的上载限制

HOW TO:使用htaccess将url限制为特定的IP

如何通过 cpanel 中的 .htaccess 限制对我们网站的访问?