我有一个受 IP 过滤器保护的网站Allow from
,但有一个特定的 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,但在其日志文件中没有看到任何错误。
我究竟做错了什么?
答案1
无需使用 setenv,只需添加一个允许访问的新目录
<Directory /home/webroot/devsite/public/api/v1/>
Order deny,allow
Allow from
</Directory>
如果是虚拟 URI 路径,则<Location /api/v1/>
使用<Directory>