通过.htaccess实现全站与子目录差异化认证,解决无限循环问题
解决主目录HTTP基础认证与WordPress子目录独立认证的循环问题
问题根源
主目录的.htaccess认证规则会被子目录默认继承,访问folder1时,主目录要求的userX认证与子目录要求的userY认证同时生效,导致服务器反复触发认证请求,形成无限循环。
修改方案
1. 主目录.htaccess保持不变
原主目录认证规则无需修改,确保folder2、folder3及根目录正常使用userX认证:
AuthUserFile /home/sites/www.website.at/web/.htpasswd AuthName Admin AuthType Basic Require user userX AuthGroupFile /home/sites/www.website.at/web/.group
2. 修改folder1的.htaccess
在子目录认证规则前,先清除继承的主目录认证要求,再设置独立认证:
# 清除主目录继承的认证规则,避免冲突 AuthType None Require all granted # 设置当前目录的独立认证规则 AuthUserFile /home/sites/www.website.at/web/.htpasswd AuthName "Admin" AuthType Basic Require user userY AuthGroupFile /home/sites/www.website.at/web/.group # 保留WordPress原有的重写规则(如果有) # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /folder1/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder1/index.php [L] </IfModule> # END WordPress
关键说明
AuthType None和Require all granted会临时取消当前目录继承的认证限制,确保子目录的独立规则可以单独生效。- 若
folder1中已有WordPress生成的重写规则,需将认证代码放在重写规则之前,避免认证逻辑被重写规则干扰。
内容的提问来源于stack exchange,提问作者lennynotkravitz
相关产品推荐
相关产品推荐

