Перезапись/перенаправление URL с двумя параметрами

Перезапись/перенаправление URL с двумя параметрами

По сути, я хочу иметь такой URL:

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

переписано/перенаправлено в это:

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

Я уже довольно долго ищу информацию в сети, но не могу понять, как это сделать.

И еще — что будет лучшим решением — перенаправление или переписывание?

Я не собираюсь использовать URL-адрес ни для чего, кроме проверки пользователя через API, поэтому он просто перенаправляет пользователя после посещения этой страницы.

решение1

Есть непроверенный код...

# 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]

Я бы использовал переписывание, поскольку вы говорите, что /auth.php уже сделает Location:. На самом деле нет смысла отправлять два перенаправления. Плюс это плохая практика для поисковых систем (я знаю, что в этом случае этого не произойдет, просто упоминаю, потому что если это плохо для SEO, это, вероятно, не так хорошо для ваших пользователей.)

Обратите внимание, что регулярное выражение RewriteRule и предыдущие условия ожидают, что эти два параметра строки запроса будут именно в этом порядке. Вам понадобится несколько строк, чтобы не навязывать порядок. Но я думаю, что это не проблема.

Связанный контент