如何通过 IP 限制对特定重写的访问

How to restrict access to a specific rewrite by IP

我有一个网站,我正在动态创建 URLs 用于 htaccess 重写。我要做的是根据访问者的 IP 地址限制 URL。

例如,我试图限制对 XYZ“子文件夹”中任何重写的访问

These should all be restricted to a specific IP    
www.domain.com/XZY
www.domain.com/XZY/anotherfile.html
www.domain.com/XZY/anotherfolder

但不限制任何其他重写

These should all be accessible    
www.domain.com/ABC
www.domain.com/greatfile.html
www.domain.com/ABC/greatfolder

XYZ 文件夹实际上并不存在,因此我无法在其中放置一个 htaccess 文件。感谢您提供的任何帮助。

使用 mod_rewrite,对任何以 /XZY 开头且不是来自指定 IP 地址的请求 URL 响应 403 禁止:

RewriteEngine On

RewriteCond %{REMOTE_ADDR} !=203.0.113.111
RewriteRule ^XZY($|/) - [F]

在任何现有重写之前,像这样的任何阻塞指令都需要靠近 .htaccess 文件的顶部。

注意:这假定客户端直接连接到您的应用程序服务器。但是,如果您使用的是 CDN(例如 Cloudflare)、负载均衡器或前端缓存代理,那么您可能需要检查请求的另一个元素,因为客户端没有直接连接到您的服务器(代理是)。