Apache 单个文件文件指令

Apache 单个文件文件指令

我正在尝试wp-login.php使用以下 .htaccess 指令将对 wordpress 安装文件的访问限制到单个 IP 地址:

<Files wp-login.php>
    order deny,allow
    allow from y.y.y.y # Actual IP address replaced
    deny from all
</Files>

这有效,但它也拒绝访问 /public_html/subdomains 目录中的 wp-login.php 文件。我尝试将 Files 指令包装在 Directory 指令中,如下所示:

   <Directory />
    Order allow,deny
    <Files wp-login.php>
       Order deny,allow
       allow from y.y.y.y
       deny from all
    </Files>
   </Directory>

但这只会给我一个 500 内部服务器错误。我还尝试将目录匹配中的 / 替换为 /public_html,但没有成功

有什么方法可以让 FilesMatch 指令仅匹配 /public_html/wp-login.php 文件而不匹配子域目录中的文件?

答案1

您遇到的问题是由于

本节中给出的指令将应用于基本名称(文件名的最后一个组件)与指定文件名匹配的任何对象。

因此您的文件指令将匹配以 wp-login.php 结尾的任何内容。

解决方案是将其包装在一个<Directory>块中以限制其范围

<Directory /path/to/wp-login>
    <Files wp-login.php>
        Order deny,allow
        allow from y.y.y.y
        deny from all
    </Files>
</Directory>

仅供参考双重安全有一个集成,为 WP 登录添加了双因素身份验证。效果非常好。

相关内容