我想使用base_auth保护我的站点的管理区域,配置看起来像
location ^~ /admin/ {
auth_basic 'Restricted';
auth_basic_user_file /opt/webroot/.htpasswd;
# this section is supposed to be valid only if auth_basic succeeds
if (!-e $request_filename ){
rewrite ^/(.*)$ /index.php?$1 last;
break;
}
}
因为'admin'实际上不存在,所以它是一个虚拟路径。无论身份验证是否成功,重写规则始终适用。
我的问题是,只有当auth_basic成功认证时,才有可能应用重写规则?
您可以使用try_files
location ^~ /admin/ {
auth_basic 'Restricted';
auth_basic_user_file /opt/webroot/.htpasswd;
try_files $uri /index.php;
}