我正在使用Apache 2.4,我阻止除了一个IP地址之外的所有人访问特定的子域。
htaccess的:
Require all denied
Require ip 111.222.333.444
这将返回“403 Forbidden”状态代码。
如何让它返回“404 Not Found”?
外面没有人应该知道这个子域的存在。 所以,从外部的角度来看,我想让它“看不见”。 因此,每个访问该域名的人都将收到404,就好像它不存在一样。
有可能吗?
答案 0 :(得分:3)
您可以使用RewriteRule
:
RewriteCond %{REMOTE_ADDR} !^111.222.333.444$
RewriteRule ^ - [R=404,L]
但是,这并不是真正隐藏子域存在的事实。它返回一个未找到的页面,这不是一回事。据推测,您的子域仍然有一个DNS条目,因此可以查找它。
我也会质疑是否需要这样做,403
存在是有原因的,我不知道为什么不返回它。无论您是否返回403
或404
,该网站仍然存在,因此我不知道您要实现的目标。没有任何方法足以阻止已确定的黑客,并且它可能是一种更安全的方法来拒绝服务器级别的IP,而不是试图通过http重定向进行模糊处理。
答案 1 :(得分:0)
使用mod _rewrite可能不如简单地拒绝ip那么优雅,但它应该按如下方式完成。
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=111.222.333.444
RewriteRule ^(.*)$ - [R=404]