
У меня возникли проблемы с блокировкой IP в .htaccess
Я положил
Require not ip 192.168.20.218
Это работает, но блокирует всю сеть, а не отдельный IP-адрес.
Может ли кто-нибудь решить эту проблему?
Я работаю на Apache 2.4 с использованием Ubuntu 14.04.3 LTS
ОБНОВЛЯТЬ:Ситуация такая: я использую IP 192.168.20.218
на своем компьютере и пытаюсь провести тест, чтобы заблокировать этот IP-адрес. Я попробовал:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
Который должен блокировать мой доступ, но вместо этого он все еще позволяет мне получить доступ к странице. Если я уберу его, Require all granted
он заблокирует всю сеть.
решение1
Вы не можете использоватьотрицаетсядиректива сама по себе для того, чтобы разрешить доступ. Как отмечено вдокументация:
Результат директивы
Require
может быть отменен с помощью опцииnot
. Как и в случае с другой отмененной директивой авторизации<RequireNone>
,когдаRequire
директива отрицается, она может только потерпеть неудачу или вернуть нейтральный результат и, следовательно, никогда не может самостоятельно авторизовать запрос.
Вместо этого вам нужно будет сделать что-то вроде следующего:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
Таким образом, вы разрешаете всем и исключаете определенный IP-адрес.
Контейнер <RequireAll>
, как следует из его названия, требует, чтобы все содержащиеся в нем директивы были выполнены.
решение2
У меня была такая проблема. Я забыл, что у меня есть обратный прокси nginx. IP, приходящий в apache, был IP обратного прокси от nginx. Вместо этого мне пришлось задать пользовательский заголовок в обратном прокси, содержащий настоящий IP, а затем проверить этот заголовок в .htaccess вместо проверки IP.