
Estoy intentando configurar Apache para redirigir a los usuarios a diferentes rutas según sus credenciales de autenticación (usandohtpasswd). He logrado configurarProxyPass, que permite la redirección de la solicitud a una ruta personalizada; sin embargo, ahora todos los usuarios son redirigidos a la misma ruta. Esto sucede debido al uso de la misma <Location />
directiva para todos los usuarios. Cuando intento con <Location /user123>
, <Location /user456>
,... funciona según lo previsto, pero me gustaría que Apache reenvíe la /
ubicación a las rutas apropiadas según las credenciales proporcionadas. es posible?
Respuesta1
Mirando apache con mod_rewrite. Creo que podrías hacer algo como lo siguiente. La variable remote_user está disponible para Apache en la configuración. Creo que puedes hacer algo como lo siguiente.
RewriteCond "%{REMOTE_USER}" "!^$"
RewriteRule "^/(.*)" "/$1/%{REMOTE_USER}" [R]
La condición dice que si el usuario remoto existe con un valor que no es una cadena vacía, entonces reescriba las URL con una URL remota. También puedes hacer una redirección.
RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"
Aquí están mis referencias. Esto muestra las variables disponibles para mod_rewrite https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Esto muestra ejemplos de mod_rewrite en acción. https://httpd.apache.org/docs/2.4/rewrite/remapping.html
Respuesta2
Si analizamos la pregunta más de cerca, ya que está utilizando la instancia de Apache para autenticarse mediante el archivo htpasswd. Creo que puedes hacer referencia a la variable REMOTE_USER.
Creo que puedes usar algo como lo siguiente en tu configuración de Apache.
ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/