![如何阻止 apache 中所有 ip 地址的访问但不阻止子文件夹的访问](https://linux22.com/image/1485820/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20apache%20%E4%B8%AD%E6%89%80%E6%9C%89%20ip%20%E5%9C%B0%E5%9D%80%E7%9A%84%E8%AE%BF%E9%97%AE%E4%BD%86%E4%B8%8D%E9%98%BB%E6%AD%A2%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E8%AE%BF%E9%97%AE.png)
我如何阻止任何人访问我的 IP 地址但不访问 apache 中的子文件夹。
例子:
44.555.666.777 <- 我想禁用访问并将其重定向到另一个域中的另一台服务器。
44.555.666.777/v1 <- 他们可以访问这个!
在我已经启用代理服务器的情况下我该如何做呢?
我已经有了这个,但是这会导致禁止访问,我想要将它们重定向到 404 页面。该页面位于另一个域中。
<Directory /var/www/>
Order allow,deny
Allow from 44.555.666.777
Allow from 127
</Directory>
答案1
一种方法是使用 mod_rewrite。使用 ModRewrite 有几种方法可以实现这一点。一种方法如下:
RewriteEngine On
RewriteCond %{HTTP_HOST} "44.55.66.77"
RewriteRule ^/(.*)/ - [L,NC]
RewriteRule ^/(.*) "http://url.for.404.site/path" [R,L]
我还没有尝试过,所以可能需要一些调整,但想法是(1)打开重写,(2)匹配目标 IP 而不是虚拟主机,(3)忽略子目录中的任何内容,(4)重写其他任何内容。