настраиваемая страница запрета для сайта о домашнем пиве - PullRequest
1 голос
/ 27 июля 2010

Я понимаю, как заблокировать IP-адрес моего веб-сервера apache с помощью .htaccess:

order allow,deny
deny from 192.168.44.201
deny from 224.39.163.12
deny from 172.16.7.92
allow from all

Я бы хотел создать пользовательскую страницу "Вас забанили". Как я мог это сделать?

EDIT:

Чтобы уточнить, я не пытаюсь создать пользовательскую страницу 403, так как они используются и в других случаях (т. Е. Не прошла базовая аутентификация и т. Д.). Самое близкое, что я дошел, это:

rewritecond %{REMOTE_ADDR} ^127\.0\.0\.1$
RewriteRule !^banned$ /banned [NC,L]

, но при сопоставлении IP-адреса возникает внутренняя ошибка сервера, а не отправляется пользователь на / banned

Ответы [ 3 ]

3 голосов
/ 27 июля 2010

Другие ответы, которые предлагают ErrorDocument для кода 403, были бы обычным способом сделать это.Но поскольку вы хотите показать другую страницу с ошибкой, если пользователю отказано в доступе по IP-адресу (в отличие от других причин), вы можете использовать mod_rewrite, как вы и предполагали.

RewriteCond %{REMOTE_ADDR} =192.168.44.201 [OR]
RewriteCond %{REMOTE_ADDR} =224.39.163.12 [OR]
RewriteCond %{REMOTE_ADDR} =172.16.7.92
RewriteRule !^/banned.html /banned.html [L]

PS Это должно произойтиконфигурация вашего виртуального хоста, а не файл .htaccess, если это вообще возможно.Если у вас нет доступа к файлу конфигурации виртуального хоста, вы можете поместить его в файл .htaccess, но удалить косую черту из шаблона RewriteRule (поэтому !^/banned.html становится !^banned.html).

2 голосов
/ 27 июля 2010

Вы используете директиву ErrorDocument. Людям, которым отказано в доступе, отправляется заголовок 403, поэтому:

ErrorDocument 403 banned.html

перенаправит заблокированных людей на banned.html


Редактировать: Другой альтернативой является полное удаление mod_access и использование правила перезаписи на основе IP (как упоминалось в вопросе). Это должно быть просто:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} 192.168.44.201 [OR]
RewriteCond %{REMOTE_ADDR} 224.39.163.12 [OR]
RewriteCond %{REMOTE_ADDR} 172.16.7.92
RewrulteRule .* banned.html [L]


Редактировать 2: Дэвид избил меня почти идентичным ответом; Я думаю его путь это то, что вы хотите

1 голос
/ 27 июля 2010

В вашем файле .htaccess:

ErrorDocument 403 /banned.html 

измените /banned.html на любой путь / к / имени файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...