Reescritura/redireccionamiento de URL con dos parámetros

Reescritura/redireccionamiento de URL con dos parámetros

Básicamente, quiero tener esta URL:

http://domain.tld/auth.php?state=somestate&token=somelongtoken

reescrito/redirigido a esto:

http://domain.tld/auth/validate/somestate/somelongtoken

He estado buscando en la red durante bastante tiempo, pero no sé cómo hacer esto.

Además, ¿sería lo mejor aquí una redirección o una reescritura?

No voy a usar la URL para nada más que validar a un usuario desde una API, por lo que solo redirige al usuario después de visitar esa página.

Respuesta1

Hay algún código no probado...

# Make sure you are accessing auth.php
RewriteCond %{REQUEST_URI} ^/auth.php$
# Check that state and token are present (in that order...)
RewriteCond %{QUERY_STRING} state=[^&]*token=
# Rewrite the URI
RewriteRule ^/auth.php\?state=\([^&]*\)\&token=\([^&]*\)$ auth/validate/\1/\2 [L,QSA]

Usaría una reescritura ya que estás diciendo que /auth.php ya hará una Ubicación:. Realmente no tiene sentido enviar dos redireccionamientos. Además, esa es una mala práctica con los motores de búsqueda (sé que en este caso no sucederá, solo lo menciono, porque si es malo para el SEO, probablemente no sea tan bueno para los usuarios).

Tenga en cuenta que la expresión regular de RewriteRule y las condiciones anteriores espera que esos dos parámetros de cadena de consulta estén en ese mismo orden. Necesitarías varias líneas para no forzar el orden. Pero me imagino que no es un problema.

información relacionada