
我正在嘗試配置 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}/