У меня есть веб-сайт, защищенный 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>