1

我有一个由网站 URL 和 API 的 URL 组成的 cakephp 项目,比如:

对于生产部署,网站和 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 处理重写的方式)?

4

1 回答 1

0

尝试以下配置:

<Directory /path/to/your/htdocs>
    AuthType Basic
    AuthName "myproject"
    AuthUserFile /path/to/.htpasswd
    AuthGroupFile /path/to/.htgroup
    Require valid-user

    AllowOverride AuthConfig
</Directory>

<Location "/api">
    Satisfy any
</Location>
于 2012-07-17T21:11:21.060 回答