У нас есть каталог на нашем сайте, который мы хотим получить только через пару IP-адресов. Таким образом, у нас есть этот файл .htaccess, чтобы попытаться заставить его работать:Разрешить определенным IP-адресам доступ к сайту с помощью mod_rewrite?
RewriteEngine on
RewriteCond %(REMOTE_ADDR) !^123\.123\.123\.123
RewriteCond %(REMOTE_ADDR) !^124\.124\.124\.124
RewriteCond %{REMOTE_ADDR} !^125\.125\.125\.125
RewriteCond %{REMOTE_ADDR} !^126\.126\.126\.126
RewriteCond %{REMOTE_ADDR} !^127\.127\.127\.127
RewriteCond %{REMOTE_ADDR} !^128\.128\.128\.128
RewriteCond %{HTTP_REFERER} !^http://www\.example\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://example\.com/ [NC]
RewriteRule ^.*$ http://www.example.com [R=301,L]
То, что мы хотим, чтобы это сделать, если запрос не исходит от одного из наших IP-адресов (очевидно, изменил их в коде выше всего для примеров), или реферер не приходит с определенного сайта, а затем перенаправляет их в другое место.
По какой-то странной причине он работает для IP-адреса, который находится в позиции 126.126.126.126
, но не работает для других. На самом деле не могу понять, почему это будет отличаться в зависимости от IP. Что может пойти не так?
Я знаю, что это создает проблему безопасности, поскольку реферер может быть подделан, но вскоре мы придумаем лучшее решение, это всего лишь временная мера.
Вы использовали тот же браузер? Вы не указали URL-адрес сайта в самой адресной строке браузера? (референт будет пуст тогда) – Nicolas
Я пробовал свежие браузеры, чтобы убедиться, что это не проблема кеширования. И он * должен * работать непосредственно, набирая URL-адрес в новое окно браузера. Он отлично подходит для одного из IP-адресов. Реферер необходим только в том случае, если ни один из IP-адресов не соответствует. Так что если они (НЕ от IP1 И НЕ от IP2 И НЕ от IP3 ... И реферер не идет с сайта x, а затем избавиться от них). – BT643