Czy ktoś może mi powiedzieć, jak umieścić następujące zakresy adresów IP (należy do Cloudfront) w mod_rewrite? szukam przekierować non-www żądania example.com do www.example.com, ale nie przekierować dowolny adres IP pochodzących z zakresów IP poniżej:Apache przerwać zakres IP podsieci
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
Użyłem narzędzia o nazwie rgxg do konwersji wszystkie powyższe z CIDR do regex i stworzył następujące wpisy w moim 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]
Dodałem wszystkie zakresy adresów iP w moich wpisach RewriteCond ale włączone tylko pierwszy z nich, bo nie chciała zagracać ten post. Reguła nie działa. Jeśli podam tylko jeden adres IP, działa on bez problemu.
Czy ktoś może sprawdzić i zobaczyć, co robię źle?
Dzięki! -Ma
Dzięki za komentarz. Jestem trochę zdezorientowany, jak stworzyć wersję CIRR wyrażenia regularnego. Czy poniższe będą dokładne dla CIDR 54.239.128.0/18: RewriteCond% {HTTP: X-FORWARD-FOR}! = 54 \ .239 \ .128 \. [1-8] {1,3}? –
Dziękuję. Nie mogę objąć głowy, jak powstają te regex. Jest to pomocne. –
Nie ma za co.Zostały one wyprodukowane przez kolegę, który ma fajne narzędzia, ale nie lubi się nimi dzielić, chociaż lubi pochwalić się tym, co potrafią. :) – zx81