有人可以告诉我如何将以下 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 地址,它就可以正常工作。
有人可以检查一下我做错了什么吗?
谢谢!
-嘛
如果您使用的是 Apache HTTPD 2.4 或更高版本,您还可以使用表达式 https://httpd.apache.org/docs/trunk/expr.html直接将 REMOTE_ADDR 与 CIDR 掩码进行匹配,而不是将它们转换为正则表达式。
简短的形式如下所示:
RewriteCond expr "-R '192.168.1.0/24'"
也可以使用以下较长的形式,但文档表明它的效率较低:
RewriteCond expr "%{REMOTE_ADDR} -ipmatch '192.168.1.0/24'"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)