.htaccess配置仅允许DHCP公网IP访问出现302重定向循环如何解决
问题根本原因
你触发重定向循环的核心原因是重写规则没有排除重定向的目标页面/blackhole2.html:当非允许IP的用户被重定向到这个页面后,请求该页面时会再次命中同一重写规则,重复触发重定向,最终形成循环。
修复后的配置示例
你可以新增一条RewriteCond来排除目标页面,修改后的规则如下:
RewriteEngine On # 排除重定向目标页面,避免循环 RewriteCond %{REQUEST_URI} !^/blackhole2\.html$ # 原有IP匹配逻辑 RewriteCond expr "file('%{DOCUMENT_ROOT}/myip') != %{REMOTE_ADDR}" RewriteRule ^(.*)$ /blackhole2.html [R=302,L]
可选优化建议
- 如果不需要自定义拦截页面,也可以考虑直接返回403状态码而非重定向,配置更简单且完全不会有循环风险:
RewriteEngine On RewriteCond expr "file('%{DOCUMENT_ROOT}/myip') != %{REMOTE_ADDR}" RewriteRule ^(.*)$ - [R=403,L] - 调试阶段建议固定使用
R=302临时重定向,避免浏览器缓存永久重定向规则导致后续调试异常。
内容的提问来源于stack exchange,提问作者ittone
相关产品推荐
相关产品推荐

