正则表达式 – Apache重写子网IP范围
发布时间:2020-12-14 06:24:36 所属栏目:百科 来源:网络整理
导读:有人可以告诉我如何在mod_rewrite中放置以下IP范围(属于Cloudfront)吗? 我希望将example.com的非www请求重定向到www.example.com但不重定向来自以下IP范围的任何IP地址: 54.192.0.0/1654.230.0.0/1654.239.128.0/1854.239.192.0/1954.240.128.0/18204.246.
有人可以告诉我如何在mod_rewrite中放置以下IP范围(属于Cloudfront)吗?
我希望将example.com的非www请求重定向到www.example.com但不重定向来自以下IP范围的任何IP地址: 54.192.0.0/16 54.230.0.0/16 54.239.128.0/18 54.239.192.0/19 54.240.128.0/18 204.246.164.0/22 204.246.168.0/22 204.246.174.0/23 204.246.176.0/20 205.251.192.0/19 205.251.249.0/24 205.251.250.0/23 205.251.252.0/23 205.251.254.0/24 216.137.32.0/19 我使用了一个名为rgxg的工具将上述所有内容从CIDR转换为Regex,并在我的httpd.conf中创建了以下条目: RewriteCond %{HTTP_HOST} ^example.com$[NC,OR] RewriteCond %{HTTP:X-FORWARDED-FOR} !54.192(.(25[0-5]|2[0-4][0-9]||1[0-9]{2}|[1-9]?[0-9])){2} RewriteRule ^/(.*)?$http://www.example.com/$1 [R=301,NC,NE,L] 我已经在我的RewriteCond条目中添加了所有ip范围,但仅包括第一个,因为我不想弄乱这篇文章.该规则似乎不起作用.如果我只放一个IP地址,它的工作没有问题. 有人可以检查,看看我做错了什么? 谢谢!
让我们看看第一个范围:
54.192.0.0/16 在正则表达式 54.192(.(25[0-5]|2[0-4][0-9]||1[0-9]{2}|[1-9]?[0-9])){2} 注意双||.考虑到调试有多难,如果还有一个错误,我就不会把整件事扔掉. 以下不太准确,因为它会匹配最多999的片段,但重要的是它捕获范围内的所有IP,而没有其他有效的IP.确实如此. 54.192.[0-9]{1,3}.[0-9]{1,3} 它很容易阅读.我建议改用它.尝试一下,如果有效,其他的也可以重新访问. 我不确定你是如何收到IP的,但根据上下文,这是另一种选择: RewriteCond %{REMOTE_ADDR} !^54.192.[0-9]{1,3}$ 让我们看看一些潜在的范围: 54.192.0.0/16 => ^54.192.[0-9]{1,3}$ 54.230.0.0/16 => ^54.230.[0-9]{1,3}$ 54.239.128.0/18 => ^54.239.(?:19[01]|1[3-8][0-9]|12[89]).[0-9]{1,3}$ 54.239.192.0/19 => ^54.239.(?:22[0-3]|2[01][0-9]|19[2-9]).[0-9]{1,3}$ 54.240.128.0/18 => ^54.240.(?:19[01]|1[3-8][0-9]|12[89]).[0-9]{1,3}$ 204.246.164.0/22 => ^204.246.16[4-7].[0-9]{1,3}$ 204.246.168.0/22 => ^204.246.(?:17[01]|16[89]).[0-9]{1,3}$ 204.246.174.0/23 => ^204.246.17[45].[0-9]{1,3}$ 204.246.176.0/20 => ^204.246.(?:19[01]|18[0-9]|17[6-9]).[0-9]{1,3}$ 205.251.192.0/19 => ^205.251.(?:22[0-3]|2[01][0-9]|19[2-9]).[0-9]{1,3}$ 205.251.249.0/24 => ^205.251.249.[0-9]{1,3}$ 205.251.250.0/23 => ^205.251.25[01].[0-9]{1,3}$ 205.251.252.0/23 => ^205.251.25[23].[0-9]{1,3}$ 205.251.254.0/24 => ^205.251.254.[0-9]{1,3}$ 216.137.32.0/19 => ^216.137.(?:6[0-3]|[45][0-9]|3[2-9]).[0-9]{1,3}$ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |