Я хотел бы заблокировать путь с моего сайта, используя конфигурацию .htaccess. Идея заключается в том, что только определенный набор IP-адресов может получить доступ к этому конкретному пути из URL-адреса.
Примечание. Это путь, а не страница или каталог. Мы пытаемся оградить веб-сервис, так что будут только почтовые звонки на URL.
Я хотел бы, чтобы url example.com/rest
был заблокирован, и все, что было за этим URL, основано на IP. Поэтому example.com/rest/test_service
и example.com/rest/test_service/read
должны быть заблокированы.
Все остальные пути из приложения должны оставаться функциональными.
То, что я пробовал, но, похоже, не работает. Не доступна ни одна страница.
SetEnvIf Request_URI "/rest$" rest_uri <RequireAll> Require env rest_uri <RequireAny> Require ip XXX.XXX.XXX.XXX </RequireAny> </RequireAll>
Я пробовал разные вещи, но никто из них, похоже, не работает. Любая помощь приветствуется.
Вы можете использовать такие директивы, чтобы разрешить диапазон IP для определенного URL:
# set env variable if URL is /rest or /rest/ SetEnvIf Request_URI "/rest(/.*)?$" rest_uri Order deny,allow # first deny all Deny from all # then allow if env var is not set Allow from env=!rest_uri # also allow your IP range Allow from 10.1.0.0/16
Вы можете использовать mod rewrite, чтобы разрешить пространственный ip-адрес
RewriteEngine on RewriteCond %{REMOTE_ADDR} !YourIP$ RewriteRule ^/?rest - [F]
Это приведет к возврату 403 запрещенной ошибки для всех других IP-адресов при доступе / rest или / rest / foobar.