请问有人能告诉我怎样把以下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]
我已经将所有IP地址范围添加到RewriteCond条目中,但仅包含第一个IP地址范围,因为我不想在这篇文章中混乱。规则似乎不能工作。如果只放一个IP地址,它可以正常工作。
请问有人可以检查并看看我做错了什么吗?
谢谢! -Ma
RewriteCond expr"!%{REMOTE_ADDR} -ipmatch'192.168.1.0/24'"
来否定表达式。 - Pierre-Alexis de Solminihac