
Basicamente, quero ter este URL:
http://domain.tld/auth.php?state=somestate&token=somelongtoken
reescrito/redirecionado para isto:
http://domain.tld/auth/validate/somestate/somelongtoken
Já faz algum tempo que estou pesquisando na net, mas não consigo descobrir como fazer isso.
Além disso - um redirecionamento ou uma reescrita seria o melhor aqui?
Não vou usar o URL para outra coisa senão validar um usuário a partir de uma API, portanto, é apenas redirecionar o usuário após visitar aquela página.
Responder1
Existe algum código não testado ...
# 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]
Eu usaria uma reescrita, já que você está dizendo que /auth.php já fará um Location:. Realmente não faz sentido enviar dois redirecionamentos. Além disso, isso é uma má prática com mecanismos de pesquisa (sei que neste caso isso não acontecerá, apenas mencionando, porque se for ruim para o SEO, provavelmente não será tão bom para seus usuários).
Observe que o regex de RewriteRule e as condições anteriores esperam que esses dois parâmetros de string de consulta estejam nessa mesma ordem. Você precisaria de várias linhas para não forçar o pedido. Mas imagino que não seja um problema.