我尝试了很多通过 Google 找到的建议,以便让我的虚拟主机从 Debian 升级到 Jessie(从 Apach 2.2 升级到 2.4)后正常工作。
我有 mod_rewrite 和 mod_access_compat,这就是为什么当我使用旧语法时它似乎工作正常。一旦我转到Require all granted
,它就会停止工作并出现 403 Forbidden。
我有很多虚拟主机,而且它们都是一样的……大多数都是 Drupal 安装。以下是虚拟主机的示例:
<VirtualHost *:80>
ServerName www.skyjacobs.com
Redirect 301 / http://skyjacobs.com/
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName skyjacobs.com
DocumentRoot /www/sky
<Directory /www/sky>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny # These 2 lines work
allow from all #
Require all granted # If I use this line only, it stops working
</Directory>
ErrorLog /www/logs/sky/error.log
LogLevel warn
CustomLog /www/logs/sky/access.log combined
</VirtualHost>
如果我注释掉 2 行旧语法并使用Require all granted
,它就会停止工作。有人知道问题可能是什么吗?谢谢任何线索。
答案1
您使用的配置模块不正确。根据文档,共有 2 个模块。
- 修改 mod_access_compat这是旧语法的兼容模块
- mod_access_host这是具有新语法的新模块
如果要更改为新语法,则应启用mod_access_host
和禁用mod_access_compat
。否则,您可以继续使用带有 的旧语法mod_access_compat
。