«Требуется не IP» .htaccess не работает в одном IP

«Требуется не IP» .htaccess не работает в одном IP

У меня возникли проблемы с блокировкой 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.

Связанный контент