我需要使用基本身份验证保护一个目录并仅重写该目录内的所有 URL。
我有以下配置:
location /admin/ {
auth_basic "Secure area";
auth_basic_user_file .htpasswd;
rewrite ^(.*)$ /admin/index.php last; break;
}
但是,基本身份验证不起作用。如果我评论rewrite
规则,它就会开始工作。
如何修复?
答案1
由于请求工作流程,“重写”在基本身份验证之前进行。
尝试使用错误页面和命名位置的技巧:
location /admin/ {
auth_basic "Secure area";
auth_basic_user_file .htpasswd;
error_page 404 = @admin;
}
location @admin {
rewrite ^(.*)$ /admin/index.php last;
}