我正在尝试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 登录添加了双因素身份验证。效果非常好。