У меня есть каталог администратора на моем веб-сервере (http://test.com/admin), и я не хочу, чтобы неавторизованные стороны получали доступ к этому каталогу / admin /, вместо этого я хочу возвращать код ошибки 404 для всех несанкционированных доступов.
Мой вопрос: есть ли способ вернуть код ошибки 404 для всех попыток доступа, кроме нескольких конкретных IP-адресов?
Мой веб-сервер - это Apache в Linux (plesk).
Для этого вы можете использовать mod_rewrite.
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=10.0.0.1 [OR]
RewriteCond %{REMOTE_ADDR} !=10.0.0.1
RewriteRule ^admin($|/) - [L,R=404]
Обратите внимание, что R=404
flag требует как минимум Apache 2.1.1.
Ну и близко:
<Location /admin>
Order deny,allow
Allow from 10.0.0.1
Allow from 192.168.1.1
Deny from all
</Location>
Хотя на самом деле это возвращает 403 Forbidden, а не 404 Not Found, что, знаете ли, правильно.
Если вы помещаете это в .htaccess в каталоге администратора, вам не нужен контейнер Location. Пример написан для файла конфигурации сервера или виртуального хоста.
См. Также документацию по mod_access.
Как бы то ни было, по мере того, как время шло, я все больше прихожу к выводу, что администратор сайта находится на совершенно отдельном виртуальном хосте.
проверьте атрибут "разрешить от" в руководстве по настройке
Под litespeed
следующая небольшая вариация с mod_rewrite
работал у меня:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^1.2.3.4 [OR]
RewriteCond %{REMOTE_ADDR} !^1.2.3.4
RewriteRule (.*) - [R=404,L]