我想知道为什么 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/ 不过,我之前以相同的方式配置了一切。只是为了确认我的设置是否正确。
所以,我不知道该怎么办。
答案1
这与 WordPress 的架构有关。当您浏览/wp-login
Apache 时,不会首先加载 wplogin。相反,重写规则用于重写 URL。
我一时记不起入口点,但从 Apache 调用了一个不同的 PHP 文件,并以wp-
登录名作为参数。
然后,另一个 PHP 文件包含 wp-login.php。阿帕奇无法控制这一点。
这些规则通常存储在 .htaccess 文件中。
为了证明这一点,您可以暂时禁用 Apache 使用 .htaccess 文件并禁用所有其他重写规则。
对于永久解决方案,您可以调整重写规则以拒绝或忽略带有附加条件的 wp-login.php。