Apache 2.4 // 文件匹配

Apache 2.4 // 文件匹配

我想知道为什么 test.html 被禁止(如预期)但 wp-login.php 可用。我尝试了 FilesMatch 和 Files.他们有类似的“chown”和“chmod”。我已阅读官方 Apache 2.4 文档。我用谷歌搜索了很多。我无法理解这个正确的配置有什么问题,以及为什么 wp-login.php 始终可用。怎么会被拒绝访问?!

<Directory /home/user/html>

Require all granted
Options -Indexes

   <FilesMatch "^wp(.*)$">
    <IfModule mod_authz_core.c>
        Require all denied
        Require ip 10.145.13
    </IfModule>
  </FilesMatch>

  <FilesMatch "^test(.*)$">
    <IfModule mod_authz_core.c>
        Require all denied
        Require ip 10.145.13
    </IfModule>
  </FilesMatch>

</Directory>

编辑

谢谢菲利普,我也考虑过类似的事情 - 包括等等......

当您浏览到 /wp-login 时,Apache 不会首先加载 wplogin。

不确定,因为没有这样的目录 /wp-login ,只有一个文件 wp-login.php ,我直接打开它 - http://...my..blog/wp-login.php

顺便说一句,我刚才记得 - 当我使用 Apache 2.2 时,它就像一个魅力。现在我有 2.4,但 WordPress 保持不变。众所周知,2.4 有不同的语法。因此,我采用了新的配置,以与旧的 2.2 配置相同的方式提供服务。但...

真奇怪。

而且我找到了一篇文章https://www.saotn.org/wordpress-htaccess-security-best-practices-apache-24/ 不过,我之前以相同的方式配置了一切。只是为了确认我的设置是否正确。

所以,我不知道该怎么办。

UPD:发现了这个https://stackoverflow.com/questions/32487034/apache-2-4-restricting-access-to-wp-login-php-by-ip-not-working

答案1

这与 WordPress 的架构有关。当您浏览/wp-loginApache 时,不会首先加载 wplogin。相反,重写规则用于重写 URL。

我一时记不起入口点,但从 Apache 调用了一个不同的 PHP 文件,并以wp-登录名作为参数。

然后,另一个 PHP 文件包含 wp-login.php。阿帕奇无法控制这一点。

这些规则通常存储在 .htaccess 文件中。

为了证明这一点,您可以暂时禁用 Apache 使用 .htaccess 文件并禁用所有其他重写规则。

对于永久解决方案,您可以调整重写规则以拒绝或忽略带有附加条件的 wp-login.php。

相关内容