如何只允许一些IP的网站的根和所有的IP的URI的特定子集?

我有一个受IPfilter保护的网站,但有一个特定的url子集,我想为所有人开放。

dev.someweb.com应该只能从特定的IP地址dev.someweb.com/api/v1/<anything here>都可以使用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> 

如果它是一个虚拟的URIpath,那么使用<Location /api/v1/>而不是<Directory>