.htaccess htpasswd导致整个站点的登录提示

时间:2014-08-03 02:19:16

标签: wordpress .htaccess

我正在尝试保护Wordpress安装免受登录页面上的暴力攻击(wp-login.php)。我在我网站的顶级目录中配置了.htaccess文件,如下所示:

 # Wordpress START
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>
 # Wordpress END

 # Protect wp-login
 <Files wp-login.php>
 AuthName "Private Access"
 AuthType Basic
 AuthUserFile /home/passwords/.htpasswd
 require valid-user
 </Files>

我遇到的问题是,此更改导致密码提示出现在我网站的每个页面上,几乎就像忽略了Files标记一样。我觉得我必须遗漏一些东西,但我无法弄清楚到底是什么。非常感谢任何帮助,非常感谢!


编辑:在使用下面的Sumurai8进行操作后,我尝试使用密码保护wp-admin而不是wp-login.php。我发现Wordpress插件“Wordfence”在我的网站的所有页面上都会出现一些问题,我猜是因为它试图加载一个位于wp-admin目录中的admin-ajax.php文件。

这就是我的wp-admin目录中的.htaccess文件现在看起来像什么,而且它看起来工作得很好我认为:

 AuthType Basic
 AuthName "Protected Area"
 AuthUserFile /home/passwords/.htpasswd
 AuthGroupFile /dev/null
 Require valid-user

 # This is the whitelisting of the ajax handler
 <Files "admin-ajax.php">
     Order allow,deny
     Allow from all
     Satisfy any 
 </Files>
 <Files "*.css" >
    Order allow,deny
    Allow from all
    Satisfy any
 </Files>

再次感谢sumurai8!

1 个答案:

答案 0 :(得分:1)

根据this tutorial,您需要保护wp-admin文件夹,而不是wp-login.php文件。您可以通过在wp-admin文件夹中创建.htaccess文件,然后将以下代码添加到其中来执行此操作:

AuthName "Private Access"
AuthType Basic
AuthUserFile /home/passwords/.htpasswd
require valid-user

为了提高安全性,您可能希望仅将其限制为ip。如果使用require执行此操作,请记住使用<RequireAll>块,否则它将满足任何require指令,而不是块中包含的所有指令。另外还要注意:一些示例包括使用<Limit>块将其限制为某些协议。由于对无效协议的处理不当,这会对某些设置造成安全风险,因此应该使用。