尝试在 Apache 上查看本地主机时出现 403 禁止错误

尝试在 Apache 上查看本地主机时出现 403 禁止错误

我想我的 Apache 一定全都搞砸了。我不知道它是否曾经工作过。我刚刚升级到 Snow Leopard,第一步本教程是启动 apache 并通过打开检查它是否正常工作http://本地主机。它启动正常,但当我转到本地主机时出现 403 禁止错误。

我不知道从哪里开始弄清楚如何修复它,所以我想知道全新安装 Apache 是否可以解决问题。

你怎么认为?

更新:我在 中找到了错误日志/private/var/log/apache2/。在其中一个日志中发现了这个。不确定它是什么意思:

[Tue Nov 10 17:53:08 2009] [notice] caught SIGTERM, shutting down
[Tue Nov 10 21:49:17 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist
Warning: DocumentRoot [/usr/docs/dummy-host2.example.com] does not exist
httpd: Could not reliably determine the server's fully qualified domain name, using Andrews-Mac-Pro.local for ServerName
mod_bonjour: Skipping user 'andrew' - cannot read index file '/Users/andrew/Sites/index.html'.
[Tue Nov 10 21:49:19 2009] [notice] Digest: generating secret for digest authentication ...
[Tue Nov 10 21:49:19 2009] [notice] Digest: done
[Tue Nov 10 21:49:19 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k DAV/2 PHP/5.3.0 configured -- resuming normal operations

更新:我还在dummy-host.example.com-error_log文件中发现了一些东西。顺便说一句,我没有设置这些虚拟主机。这是默认配置吗?

[Tue Nov 10 21:59:57 2009] [error] [client ::1] client denied by server configuration: /usr/docs

更新:哇哦!我找到了包含虚拟主机定义的文件。它在 中/etc/apache2/extra/httpd-vhosts.conf。它包含这两个虚拟虚拟主机设置。我添加了一个localhost虚拟主机。不确定这是否有必要,但由于之前不起作用,所以决定还是这么做。删除旧虚拟主机、添加新的 localhost 虚拟主机并重新启动 apache 后,它似乎可以正常工作。所以我想每当我想添加虚拟主机时,我只需要将它们添加到这个文件中?或者是否有某个地方的 hosts 文件,就像在 Linux 上一样?

更新:是的,有一个/etc/hosts文件需要更改。将虚拟主机名添加到该文件中。

答案1

如果您收到 403 错误,则可能意味着该目录不存在,或者该目录的权限不允许您看到它。

我的问题是默认虚拟主机设置指向不存在的目录。

因此你应该这样做:(假设你使用的是 Snow Leopard)

  1. 查找并打开您的虚拟主机配置文件。

    pico /etc/apache2/extra/httpd-vhosts.conf
    
  2. 检查您的虚拟主机定义是否在其中,否则请创建它们

    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Users/yourusername/Sites/mysite"
    ServerName mysite.local
    ErrorLog "/private/var/log/apache2/mysite-error_log"
    CustomLog "/private/var/log/apache2/mysite-access_log" common
    </VirtualHost>
    
  3. 打开/etc/hosts文件并添加您的虚拟主机名。这是我的:

    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1          localhost
    255.255.255.255    broadcasthost
    ::1                localhost 
    fe80::1%lo0        localhost
    
    # VIRTUAL HOST START
    127.0.0.1          localhost
    127.0.0.1          mysite.local
    # VIRTUAL HOST STOP
    
  4. 现在重新启动 Apache,您就可以开始了!

    sudo apachectl restart
    

答案2

它也被标记为警告,它实际上是错误日志中的关键行:

Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist

Apache 正在搜索一个目录,该目录将保存您与之通信时将解决的文件。显然,此目录不存在,因此 Apache 无法为您解决任何问题。创建目录并index.html在其中放置一些文件,或编辑您的配置文件以将 Apache 指向另一个目录。

相关内容