Как я могу отказать с определенного IP-адреса, но по-прежнему показать пользовательскую страницу ошибки с Apache2?

У меня есть в моем веб-корень /home/www/ у меня есть .htaccess файл для запрета IP-адресов:

order allow,deny
deny from 1.2.3.4
deny from 2.3.4.5
allow from all

ErrorDocument 500 /errors/500.htm
ErrorDocument 403 /errors/403.htm

Я также попробовал это так с заявлениями об ошибках:

ErrorDocument 500 /home/www/errors/500.htm
ErrorDocument 403 /home/www/errors/403.htm

Я создал каталог ошибок, /home/www/errors который содержит следующие файлы:

403.htm
500.htm
.htaccess

В каталоге ошибок .htaccess Я установил правила:

order deny,allow
allow from all

Если я помещу свой IP в корневой файл.htaccess, я не смогу просмотреть сайт. Я получаю ошибку:

Запрещено - у вас нет прав доступа к / на этом сервере.

Кроме того, при попытке использовать ErrorDocument для обработки запроса произошла ошибка 403 Forbidden.

Однако, если я перехожу к /errors/500.htm, я вижу эту страницу в своем браузере, поэтому я знаю подкаталог .htaccess кажется, что эти файлы могут быть загружены.

Что я делаю неправильно? Как я могу отказать с определенного IP-адреса, но по-прежнему показать пользовательскую страницу ошибки с Apache2?

1 ответ

Решение

Было бы намного проще просто перенаправить людей, пришедших с заблокированных IP-адресов, на страницу с ошибкой:

RewriteCond %{REMOTE_ADDR} 1.2.3.4
RewriteRule .* /CustomError.html [R=403]
Другие вопросы по тегам