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.

Traefik reescribe URI manteniendo la cadena de consulta.

En Traefik 1.7 me gustaría reescribir:

https://example.com/?uuid=1234

a

https://example.com/foo/bar/?uuid=1234

Estoy usando algo similar a esto en un archivo de docker-compose

labels:
 - traefik.frontend.redirect.regex=^https?://example.com/$$
 - traefik.frontend.redirect.replacement=https://example.com/foo/bar/

Lo cual solo funciona sin la cadena de consulta. ¿Cómo puedo hacer que funcione con una cadena de consulta?

Tags:  

Answer

  1. Avatar for davy.ai

    Para reescribir una URL con una cadena de consulta en Traefik 1.7, puedes utilizar la siguiente sintaxis en tu archivo docker-compose:

    labels:
      - traefik.frontend.rule=Host:example.com;Path:/;Query:uuid=1234
      - traefik.frontend.redirect.regex=^https?://example.com/(.*)$$
      - traefik.frontend.redirect.replacement=https://example.com/foo/bar/$$1
    

    Explicación:
    traefik.frontend.rule=Host:example.com;Path:/;Query:uuid=1234 especifica la regla para coincidir con la solicitud entrante. En este caso, coincide con las solicitudes para el dominio example.com, con una ruta de / y una cadena de consulta que contiene uuid=1234.
    traefik.frontend.redirect.regex=^https?://example.com/(.*)$$ especifica la expresión regular para coincidir con la URL original, incluyendo la cadena de consulta. El (.*) captura todo después de example.com/, incluyendo la cadena de consulta.
    traefik.frontend.redirect.replacement=https://example.com/foo/bar/$$1` especifica la URL de reemplazo. El$$1inserta el grupo capturado de la expresión regular, que es todo después deexample.com/. Esto agrega efectivamentefoo/bar` a la ruta, preservando la cadena de consulta.

    Con estas etiquetas, Traefik debería reescribir correctamente https://example.com/?uuid=1234` ahttps://example.com/foo/bar/?uuid=1234` como se desea.

Comments are closed.