我正在尝试配置 Apache,根据用户的身份验证凭据将用户重定向到不同的路径(使用密码)。我已成功设置代理通行证,这可以将请求重定向到自定义路径,但是现在所有用户都被重定向到同一路径。这是因为<Location />
对所有用户使用了相同的指令。当我尝试使用<Location /user123>
、<Location /user456>
、.. 时,它按预期工作,但我希望 Apache/
根据提供的凭据将位置转发到适当的路径。这可能吗?
答案1
使用 mod_rewrite 查看 apache。我相信您可以做类似以下的事情。remote_user 变量在配置中可供 apache 使用。我相信您可以做类似以下的事情。
RewriteCond "%{REMOTE_USER}" "!^$"
RewriteRule "^/(.*)" "/$1/%{REMOTE_USER}" [R]
条件是如果远程用户存在且值不是空字符串,则使用远程 URL 重写 URL。您也可以执行重定向匹配。
RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"
以下是我的参考资料。这显示了 mod_rewrite 可用的变量 https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
这显示了 mod_rewrite 实际运行的示例 https://httpd.apache.org/docs/2.4/rewrite/remapping.html
答案2
更仔细地看一下这个问题,因为您正在使用 apache 实例通过 htpasswd 文件进行身份验证。我相信您可以参考 REMOTE_USER 变量。
我相信您可以在 apache 配置中使用类似以下内容。
ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/