gpt4 book ai didi

regex - Apache重写子网IP范围

转载 作者:行者123 更新时间:2023-12-04 10:04:05 24 4
gpt4 key购买 nike

有人可以告诉我如何将以下IP范围(属于Cloudfront)放入mod_rewrite吗?
我希望将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范围。该规则似乎无效。如果我仅输入一个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} 


注意双 ||。考虑到调试的难度,即使有一个错误,我也不会觉得丢掉整个东西。

以下内容不是 exact,因为它会匹配最多 999的片段,但重要的是它捕获了范围内的所有IP,并且没有其他有效IP。是的

54\.192\.[0-9]{1,3}\.[0-9]{1,3}


而且很容易阅读。我建议改用它。尝试一下,如果可行,其他的也可以重新考虑。

我不确定您如何获得IP,但是根据上下文,这是另一种选择:

RewriteCond %{REMOTE_ADDR} !^54\.192\.[0-9]{1,3}\.[0-9]{1,3}$


让我们看一些潜在的范围:

54.192.0.0/16 => ^54\.192\.[0-9]{1,3}\.[0-9]{1,3}$
54.230.0.0/16 => ^54\.230\.[0-9]{1,3}\.[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}$

关于regex - Apache重写子网IP范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com