
Ich versuche, Apache so zu konfigurieren, dass Benutzer basierend auf ihren Authentifizierungsdaten auf unterschiedliche Pfade umgeleitet werden (mithtpasswd). Ich habe es geschafft,ProxyPass, das die Umleitung der Anfrage auf einen benutzerdefinierten Pfad ermöglicht, allerdings werden nun alle Benutzer auf denselben Pfad umgeleitet. Dies geschieht, weil <Location />
für alle Benutzer dieselbe Anweisung verwendet wird. Wenn ich es mit <Location /user123>
, <Location /user456>
,.. versuche, funktioniert es wie vorgesehen, aber ich möchte, dass Apache den /
Standort basierend auf den bereitgestellten Anmeldeinformationen an geeignete Pfade weiterleitet. Ist das möglich?
Antwort1
Ich schaue mir Apache mit mod_rewrite an. Ich glaube, Sie könnten so etwas wie das Folgende tun. Die Variable remote_user ist für Apache in der Konfiguration verfügbar. Ich glaube, Sie könnten so etwas wie das Folgende tun.
RewriteCond "%{REMOTE_USER}" "!^$"
RewriteRule "^/(.*)" "/$1/%{REMOTE_USER}" [R]
Die Bedingung besagt, dass URLs mit einer Remote-URL neu geschrieben werden, wenn der Remote-Benutzer mit einem Wert existiert, der kein leerer String ist. Sie können auch ein Redirectmatch durchführen.
RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"
Hier sind meine Referenzen. Dies zeigt die für mod_rewrite verfügbaren Variablen https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Dies zeigt Beispiele von mod_rewrite in Aktion https://httpd.apache.org/docs/2.4/rewrite/remapping.html
Antwort2
Schauen Sie sich die Frage genauer an, da Sie die Apache-Instanz zur Authentifizierung mithilfe der htpasswd-Datei verwenden. Ich glaube, Sie können auf die Variable REMOTE_USER verweisen.
Ich glaube, Sie können in Ihrer Apache-Konfiguration so etwas wie das Folgende verwenden.
ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/