我遇到了问题,我不小心从Apache 2.2升级到2.4,现在需要更改我的httpd.conf文件以使用新的Require指令,而不是使用旧的Order和Allow指令。我想我已经做了我需要做的所有改变,但有一节我不知道应该用它替换它。这是一节:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
Order,Deny和Satisfy的这种组合使我感到困惑,因为我是一个新手。什么是适当的2.4配置来完成同样的事情。我试过谷歌搜索一个答案,搜索这个网站,但没有找到任何东西(也许使用错误的条款 - 我不知道)。如果那里的一些古茹可以提供一些非常感谢的帮助。
谢谢!
答案 0 :(得分:6)
Apache 2.4中的习语发生了变化 阅读http://httpd.apache.org/docs/trunk/upgrading.html
的“从2.2升级到2.4”查找以下条目:
2.2 configuration:
Order deny,allow
Deny from all
2.4 configuration:
Require all denied
答案 1 :(得分:4)
在您的情况下,不再需要Satisfy All
:
<强> v2.2中强>
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<强> V2.4:强>
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
答案 2 :(得分:0)
以下是我在升级后让Apache备份并运行的方法:
使用&#39; etc / apache2&#39;中新安装的apache2.conf文件。目录。这将清除相当多的错误。新文件包含新的&#39;要求&#39;语法内置。
更改&#39; sites-available&#39;中的所有VH文件目录例如xyzsite.com。 conf (在文件中添加&#39; .conf&#39;与默认文件相同。您必须更改&#39;要求&#39; Henk指出这个文件中的语法。
httpd.conf根本就没用过,所以如果你有一个,你也可以删除它以避免将来混淆。
希望这有帮助。
答案 3 :(得分:0)
我知道这个问题是在2014年提出的,但是这个解决方案太好了,无法在此处发布...
在旧版2.2 Apache上,我使用以下方法准备迁移:
<Location />
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
order allow,deny
allow from all
</IfVersion>
</Location>
取决于Apache版本,将使用正确的配置语法。而且,无论运行2.2还是2.4都没关系。