2

下面是我的 VHost(稍作修改以隐藏一些 URL):

  1 名称VirtualHost 192.168.1.49:80
  2
  3 <虚拟主机 192.168.1.49:80>
  4 ServerName 内部名称.local
  5 ServerAlias *.internal-name.local external-domain.co.uk *.external-domain.co.uk
  6
  7 <目录“/var/www/html”>
  8 允许覆盖所有
  9
 10 订单拒绝,允许
 11 拒绝一切
 12
 13 AuthName“受限开发服务器”
 14 AuthUserFile /var/www/html/.htpasswd
 15 AuthType 基本
 16 需要有效用户
 17
 18 允许来自 192.168.1。
 19
 20 满足任何
 21 </目录>
 22
 23 <位置/开放路径>
 24 订单允许,拒绝
 25 允许所有人
 26 拒绝从无
 27 </位置>
 28
 29 日志级别调试
 30 虚拟文档根 /var/www/html/%1/
 31 </虚拟主机>

一切正常 - 每个子域在 /var/www/html 中都有自己的文件夹。来自 192.168.1.x 的任何请求(通过内部域映射)都可以在没有密码提示的情况下查看该站点。来自外部 IP(通过 external-domain.co.uk)的任何请求都将被提示输入密码。

我遇到的问题是让最后一个“位置”规则起作用。

我所做的任何事情(无论是 .htaccess 还是 vhost 级别)都不会使用或禁用“/open-path” URL 的密码保护。

实际上 - 此服务器上的每个站点都在运行 Drupal,它在 .htaccess 中使用 URL 重写,将所有非文件映射到“?q =”... 所以: http://domain/foo/bar 映射到: http://domain/index.php?q=foo/bar

我不认为这应该会影响这一点,不是吗?

我指出它的原因是“/open-path/callback”需要为第 3 方 API 打开才能“ping”该站点。我需要在推送之前测试这个回调是否正常工作,但是我不想让整个网站免受密码保护。

我尝试将位置设置为“/index.php?q=open-path”,但这也不起作用。

任何建议将不胜感激!

4

1 回答 1

3

这来自 Apache 文档: http ://httpd.apache.org/docs/2.2/mod/core.html#require

<Directory /path/to/protected/unprotected>
# All access controls and authentication are disabled
# in this directory
Satisfy Any
Allow from all
</Directory>

这也适用于位置。

于 2011-07-12T19:24:12.510 回答