es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

RewriteRule incluyendo solo la última parte de REQUEST_URI.


 ProxyPreserveHost On
 RewriteEngine on
 RewriteCond %{HTTP:Upgrade} websocket [NC]
 RewriteCond %{HTTP:Connection} upgrade [NC]
 RewriteRule .* "ws://192.168.0.101:1234%{REQUEST_URI}" [P]


Cuando el cliente se conecta a

ws://www.example.com/foo/whatever_arbitrary_random

esto funciona perfectamente, pero el resultado es

ws://192.168.0.101:1234/foo/whatever_arbitrary_random

¿Cómo puedo deshacerme de la /foo/ para que el resultado sea

ws://192.168.0.101:1234/whatever_arbitrary_random

El cliente todavía debe conectarse a /foo/ para activar esto

EDIT: Encontré cómo hacerlo, reemplazar la última línea con

RewriteRule ([^/]+)/?$ ws://192.168.0.101:1234/$1 [P,L]

Pero por favor lea la primera respuesta sugiriendo no hacer esto en una Location
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado de eliminar “/foo/” de la URL final, se puede realizar la siguiente modificación en la última RewriteRule:

    RewriteRule ^/foo/(.*)$ ws://192.168.0.101:1234/$1 [P]
    

    Esto coincidirá con cualquier URL que comience con “/foo/” y capturará todo después de ella usando el patrón del grupo “(.*)”. Luego, el grupo capturado se agregará a la URL de destino después de “ws://192.168.0.101:1234/”. Esto eliminará efectivamente “/foo/” de la URL final.

    Sin embargo, vale la pena mencionar que no se deben hacer estas modificaciones dentro de un bloque LocationMatch, ya que puede afectar otras reglas o directivas dentro de ese bloque. Se recomienda utilizar un bloque VirtualHost o Directory separado que pueda dirigirse específicamente a las URL que necesitan ser reescritas.

Comments are closed.