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

Posted

技术标签:

【中文标题】如何通过 IP 限制对特定重写的访问【英文标题】:How to restrict access to a specific rewrite by IP 【发布时间】:2022-01-17 02:30:06 【问题描述】:

我有一个网站,我通过 htaccess 重写动态创建 URL。我要做的是根据访问者的 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 文件。感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

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

RewriteEngine On

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

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

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

【讨论】:

以上是关于如何通过 IP 限制对特定重写的访问的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess:如何通过 IP 限制对单个文件的访问?

服务器开了IP限制,如何只让特定的IP访问。

限制 asmx web 服务对特定 IP 地址的访问

通过 IP 限制对 CloudFront 的访问

如何通过 IP 限制对我的 PHP 弹性 beanstalk 环境的访问?

限制访问特定国家/地区的 PHP 网站