Назад | Перейти на главную страницу

Как разрешить только некоторые IP-адреса для корня веб-сайта и все IP-адреса для определенного подмножества URI?

У меня есть веб-сайт, защищенный Allow from IP-фильтр, но есть одно конкретное подмножество URL-адресов, которое я хотел бы открыть для всех.

dev.someweb.com должен быть доступен только с определенных IP-адресов dev.someweb.com/api/v1/<anything here> должен быть доступен всем и всеми методами - GET, POST и т. д.

Вот мой текущий пример httpd.conf:

    <VirtualHost *:80>
        DocumentRoot /home/webroot/devsite/public
        ServerName   dev.someweb.com
        <Directory /home/webroot/devsite/public>
            SetEnvIf REQUEST_URI "/api/v1/" allowapi=1
            Order deny,allow
            Deny from all
            Allow from 192.168.1.0
            Allow from env=allowapi # this does not work, dev.someweb.com/api/v1/someresource still fails with 403 if accessing from another IP
            AllowOverride All
        </Directory>
        ErrorLog /home/webroot/devsite/tmp/log/error_log
    </VirtualHost>

Пробовал переносить SetEnvIf в разные места - все равно не работает, dev.someweb.com/api/v1/someresource всегда запрещено за пределами 192.168.1.0

На всякий случай - перезапускаю Apache после всех изменений и в его лог-файле ошибок не вижу.

Что я делаю не так?

Нет необходимости использовать setenv, просто добавьте новый каталог, разрешающий доступ

<Directory /home/webroot/devsite/public/api/v1/>
   Order deny,allow
   Allow from 
</Directory>

Если это виртуальный путь URI, используйте <Location /api/v1/> вместо того <Directory>