Apache - 需要所有被拒绝的HTTP状态代码

时间:2015-04-15 10:16:39

标签: apache .htaccess

我正在使用Apache 2.4,我阻止除了一个IP地址之外的所有人访问特定的子域。

htaccess的:

Require all denied
Require ip 111.222.333.444

这将返回“403 Forbidden”状态代码。

如何让它返回“404 Not Found”?

外面没有人应该知道这个子域的存在。 所以,从外部的角度来看,我想让它“看不见”。 因此,每个访问该域名的人都将收到404,就好像它不存在一样。

有可能吗?

2 个答案:

答案 0 :(得分:3)

您可以使用RewriteRule

RewriteCond %{REMOTE_ADDR} !^111.222.333.444$
RewriteRule ^ - [R=404,L]

但是,这并不是真正隐藏子域存在的事实。它返回一个未找到的页面,这不是一回事。据推测,您的子域仍然有一个DNS条目,因此可以查找它。

我也会质疑是否需要这样做,403存在是有原因的,我不知道为什么不返回它。无论您是否返回403404,该网站仍然存在,因此我不知道您要实现的目标。没有任何方法足以阻止已确定的黑客,并且它可能是一种更安全的方法来拒绝服务器级别的IP,而不是试图通过http重定向进行模糊处理。

答案 1 :(得分:0)

使用mod _rewrite可能不如简单地拒绝ip那么优雅,但它应该按如下方式完成。

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=111.222.333.444
RewriteRule ^(.*)$ - [R=404]