我知道有很多关于这个错误的问题,我也看过所有的答案。但我没有找到任何可以解决这个问题的方法。
在尝试迁移 WordPress 网站时,我首先在新主机上设置了一个 vhost 子域,以进行测试。现在,我尝试访问根目录时出现 403 错误。日志显示了臭名昭著的错误:
[authz_core:错误] [pid 22538] [客户端(ip 和端口)] AH01630:服务器配置拒绝客户端:/home/apprunner/mysite
我还有其他几个 vhost 站点运行正常,没有任何问题。它们都配置在同一个 httpd.conf 文件中。有问题的站点配置如下:
<VirtualHost *:80>
ServerName mysite.mydomain.com
DocumentRoot /home/apprunner/mysite
DirectoryIndex index.php
<Directory /home/apprunner/mysite>
AllowOverride All
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
我在此网站上使用 .htaccess 文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我的环境:
- 托管服务提供商:Linode
- 操作系统:Arch Linux
- Apache 2.4.12
- PHP 5.6.13
虽然 Apache 错误指出配置是问题所在,但我也对文件权限进行了两次、三次、四次检查。它们看起来不错,并且设置与我在此服务器上的其他虚拟主机站点相同,它们运行良好。
我非常感激您提供的任何帮助,尤其是因为我知道这是一个常见的问题。即便如此,谷歌和服务器故障搜索也帮不上忙。(或者我没有正确阅读它们,谁知道呢)。
答案1
哎呀,我花了这么长时间才发现 Directory 和 ServerName 语句的路径中缺少一个目录。它离正确路径太近了,我完全忽略了它。
不过,也许这会对某些人有所帮助,即,将 vhost 指向不存在的目录将会导致此错误,因此它不仅限于您如何设置目录权限或选项。