关于c#:动态vhost在OSX Apache上禁止403

关于c#:动态vhost在OSX Apache上禁止403

我已经关注本指南并尝试通过允许foo.dev直接指向 Web 文件夹在 OSX 上创建动态虚拟主机/foo。我的区别在于我使用的~/Sites是 Web 文件夹,而不是指南中的 Mac HD。它使用 dnsmasq,我相信它已安装并正常工作。

因此在我的 ~/Sites 文件夹中我有:

home
sites
|-foo
|-bar

我的 httpd-vhosts.conf 如下所示:

<Virtualhost *:80>
DocumentRoot "/Users/harryg/Sites/home"
ServerName home.dev
UseCanonicalName Off
ErrorLog "logs/home/error.log"
<Directory "/Users/harryg/Sites/home">
    #Options FollowSymLinks
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride None
    Allow from all
</Directory>
</Virtualhost>

<Virtualhost *:80>
VirtualDocumentRoot "/Users/harryg/Sites/sites/%1"
<Directory "/Users/harryg/Sites/sites/%1">
    Options FollowSymLinks
    #Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride None
    Allow from all
</Directory>
ServerName sites.dev
ServerAlias *.dev
UseCanonicalName Off
</Virtualhost>

第一个 vhost 工作正常,并且转到我在该 vhost 根目录中的home.dev示例文件。index.php

无论 .dev 子域中是否存在文件夹,第二个虚拟主机都会对 any.dev 给出 403 Forbidden 错误。

有任何想法吗?

编辑:

最新日志条目

Apache 错误日志:

[Wed Dec 18 00:45:37 2013] [error] [client 127.0.0.1] File does not exist: /Users/harryg/Sites/home/favicon.ico
[Wed Dec 18 00:45:45 2013] [error] [client 127.0.0.1] client denied by server configuration: /Users/harryg/Sites/sites/test/, referer: http://home.dev/
[Wed Dec 18 00:45:45 2013] [error] [client 127.0.0.1] client denied by server 

服务器现在可以工作了(配置文件中的错误日志目录存在问题)。但仍然无法访问动态虚拟主机。

答案1

你的第二个网站的内容是什么?

可能有两个原因:

  1. 如果目录没有指数文档(index.php、index.html、default.html 等)和目录列表不允许,Apache 将显示 403 错误页面。

  2. 我注意到您没有在 sites.dev 中启用 ExecCGI。您可以尝试启用它吗?

更新:路径中的百分号 ( /Users/harryg/Sites/sites/%1) 是针对 mod_vhost_alias 的,不是 Apache 的<Directory>规则。修改此内容:

<Directory "/Users/harryg/Sites/sites/%1">

对此:

<Directory "/Users/harryg/Sites/sites">

它有用吗?

答案2

刚刚遇到了同样的问题,结果发现这是 apache 中的默认设置。在 httpd.conf 中是这样的

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

删除“Deny from all”行并重新启动 apache。

答案3

403 错误表示拒绝访问。您必须检查从树目录到站点目录的权限。

确保运行 apache 的用户对目录具有读取和执行权限,并且对文件具有读取权限。

相关内容