Установка перенаправления 302 с помощью htaccess с CloudFlare? - PullRequest
0 голосов
/ 11 июня 2011

Попытка ограничить доступ сайта одним IP при одновременном запуске обратного прокси CloudFlare (во время тестирования). Используя стандарт

RewriteEngine On
RewriteCond %{REMOTE_HOST} !32\.231\.45\.342
RewriteRule $ http://www.google.com [R=302,L] 

Этот некомментированный # с включенным cloudflare всегда будет перенаправлять на Google, даже с IP-адреса удаленного хоста.

Если я добавлю все IP-адреса CloudFlare, это, очевидно, не поможет.

Единственный обходной путь, который я вижу, - хранить любой IP-адрес, к которому я хочу предоставить доступ, в массиве и проверять его через PHP, перенаправляя в другое место, если не найдено. Однако, если мне это удастся, я бы предпочел использовать htaccess. Мысли?

1 Ответ

0 голосов
/ 07 июля 2011

mod_cloudflare (https://github.com/cloudflare/CloudFlare-Tools) должен исправить IP-адрес на правильный.

Если это не требуется, тогда вы можете использовать заголовок X-Forwarded-For, например:

RewriteEngine On
# if X-Forwarded-For is set
RewriteCond %{HTTP:X-Forwarded-For} .
RewriteCond %{HTTP:X-Forwarded-For} !32\.231\.45\.342 [OR]

# if X-Forwarded-For isn't set default to remote_host
RewriteCond %{HTTP:X-Forwarded-For} ^$
RewriteCond %{REMOTE_HOST} !32\.231\.45\.342
RewriteRule $ http://www.google.com [R=302,L]

Люди могли бы подделать это, если бы знали, что IP был 32.231.45.342, установив пользовательский X-Forwarded-For. Работает только в том случае, если он не проходит через cloudflare, что должно изменить заголовок X-Forwarded-For на собственный.

...