如何防止htaccess指令级联到子目录

时间:2013-09-25 08:57:03

标签: apache .htaccess

我有一个htaccess文件,用于密码保护名为wp-login.php的文件(由Wordpress用于登录)。

这就是htaccess的样子:

ErrorDocument 401 "Authorization Required"
<FilesMatch "wp-login.php">
AuthName "Restricted"
AuthType Basic
AuthUserFile /home/username/.wp-admin
require valid-user
</FilesMatch>

我想在directory xyz下的文件中设置密码,因此xyz/wp-login.php应该有密码。

然而,问题是我在wp-login.php(abc的子目录)下有另一个xyz/abc/ directory文件,我 NOT 想要密码保护。但这种情况会自动发生在htaccess指令中 - 所以我的问题是如何防止指令级联到子目录?

我知道带有嵌套File指令的Directory指令,但这似乎仍然是级联密码保护 - 注意我有权访问我的httpd.conf文件,因为我使用的是VPS而不是共享主机。

谢谢!

2 个答案:

答案 0 :(得分:1)

而不是FilesMatch设置你的.htaccess:

SetEnvIfNoCase Request_URI "^/wp-login\.php" AUTH_NEEDED

AuthType Basic
AuthName "Restricted"
AuthUserFile /home/username/.wp-admin
Satisfy    any
Order      allow,deny
Allow from all
Deny from env=AUTH_NEEDED

仅当URI为http://site.com/wp-login.phphttp://site.com/xyz/wp-login.php等免于身份验证时才需要进行基本身份验证。

答案 1 :(得分:0)

基本上,您在子目录中创建一个新的.htaccess文件以覆盖根目录。关于此问题的更多细节在此问题中描述:

How to remove .htaccess password protection from a subdirectory

希望它有所帮助。