2

我有一个问题,我不小心从 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 配置是什么。我试过用谷歌搜索答案并搜索了这个网站,但没有找到任何东西(可能使用了错误的术语——我不知道)。如果那里的一些大师可以提供一些帮助,将不胜感激。

谢谢!

4

4 回答 4

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
于 2012-05-13T17:42:16.643 回答
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>
于 2014-02-03T16:58:09.203 回答
1

我知道这个问题是在 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 也没关系。

于 2020-12-03T07:55:07.050 回答
0

以下是我在升级后让 Apache 恢复并运行的操作:

  1. 使用“etc/apache2”目录中新安装的 apache2.conf 文件。这将清除相当多的错误。新文件内置了新的“Require”语法。

    • 在 apache2.conf 文件中,“默认”目录路径是“var/www”。我的不一样,所以我把头发拉出来,直到我注意到它。
  2. 更改“站点可用”目录中的所有 VH 文件,例如 xyzsite.com。conf(将“.conf”添加到文件中。与默认文件相同。正如 Henk 指出的那样,您必须更改此文件中的“Require”语法。

httpd.conf 根本没有使用,所以如果你有一个,你最好删除它以避免将来混淆。

希望这可以帮助。

于 2014-04-14T18:07:01.087 回答