首页 > 解决方案 > .htaccess 下 ipv6 子网的 RewriteCond

问题描述

我有一个与到达网站的 ipv6 地址相关的问题。apache 日志,显示 ipv4 和 ipv6 下的客户端 x-forward ips

该网站通过每个允许的子网的 ipv4 白名单受 .htaccess 保护。

例子 :

RewriteCond %{HTTP:X-FORWARDED-FOR}  !^123\.45\.67
RewriteCond %{HTTP:X-FORWARDED-FOR}  !^123\.45\.68
RewriteCond %{HTTP:X-FORWARDED-FOR}  !^123\.45\.69

我怎么能对 ipv6 前缀做同样的事情,因为以下似乎不起作用

RewriteCond %{HTTP:X-FORWARDED-FOR}  !^\[1234:123:123::/48\]

如果我在 rewritecond 中指定 ipv6 客户端 ip,它就可以工作。但只有一段时间,直到他的 ipv6 地址被更新。

标签: apache.htaccessipv6

解决方案


你能试试:

RewriteCond expr "! %{HTTP:X-FORWARDED-FOR} -ipmatch '1234:123:123::/48'"

这意味着 Apache >= 2.4,本机(意味着不使用表达式RewriteCond不处理 IP 范围/CIDR 表示法。


推荐阅读