![未经授权的尝试返回 404 代码](https://linux22.com/image/483228/%E6%9C%AA%E7%BB%8F%E6%8E%88%E6%9D%83%E7%9A%84%E5%B0%9D%E8%AF%95%E8%BF%94%E5%9B%9E%20404%20%E4%BB%A3%E7%A0%81.png)
我的网络服务器上有一个管理目录(http://test.com/admin),我不希望未经授权的各方访问此 /admin/ 目录,而是希望对所有未经授权的访问返回 404 错误代码。
我的问题是,有没有办法让除少数特定 IP 地址之外的所有访问尝试都返回 404 错误代码?
我的网络服务器是 Linux 上的 Apache(plesk)。
答案1
好了,结束吧:
<Location /admin>
Order deny,allow
Allow from 10.0.0.1
Allow from 192.168.1.1
Deny from all
</Location>
尽管这实际上返回的是 403 Forbidden,而不是 404 Not Found,但你知道,这是正确的。
如果您将其放在 admin 目录中的 .htaccess 中,则不需要 Location 容器。该示例是为服务器或虚拟主机配置文件编写的。
另请参阅 mod_access 文档。
不管怎样,随着时间的推移,我越来越发现将网站管理员放在完全独立的虚拟主机上很有价值。
答案2
您可以使用 mod_rewrite 来做到这一点。
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=10.0.0.1 [OR]
RewriteCond %{REMOTE_ADDR} !=10.0.0.1
RewriteRule ^admin($|/) - [L,R=404]
请注意,该R=404
标志至少需要 Apache 2.1.1。
答案3
检查配置指南中的“允许来自”属性
答案4
以下litespeed
小变化mod_rewrite
对我有用:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^1.2.3.4 [OR]
RewriteCond %{REMOTE_ADDR} !^1.2.3.4
RewriteRule (.*) - [R=404,L]