我有一个由网站 URL 和 API 的 URL 组成的 cakephp 项目,比如:
- http://myproject.com/controller1/someaction
- http://myproject.com/controller2/someotheraction
- http://myproject.com/api/controller1/someapiaction
对于生产部署,网站和 API 都使用 cakephp 的方法处理身份验证和授权。
我想将整个项目部署在临时服务器上。在那里,网站应该受到 HTTP 身份验证保护,而 API 应该不受保护(因为我不想将身份验证添加到 API 使用者)。我不想更改项目的源代码或配置,而是通过 Apache 配置解决它。
我尝试了几种 vhost 配置,基本上遵循这个方案:
<LocationMatch "/api/.*">
Order allow,deny
Allow from all
Satisfy any
</LocationMatch>
<Location />
Order allow,deny
Allow from all
AllowOverride all
AuthType Basic
AuthName "myproject"
AuthUserFile /path/to/.htpasswd
AuthGroupFile /path/to/.htgroup
Require group mytesters
</Location>
我还尝试混合位置和目录指令,对两个部分使用 Location 或 LocationMatch,对 LocationMatch 使用否定正则表达式,对两个部分使用单独的虚拟主机,...... - 这些都不起作用:整个站点都受到保护,或者什么都没有。
我是不是真的错了,还是不可能(由于 Apache 或 cakephp 处理重写的方式)?