是否有可能检测base_auth是否在nginx配置中成功



我想使用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;
}

最新更新