2つのパラメータによるURL書き換え/リダイレクト

2つのパラメータによるURL書き換え/リダイレクト

基本的に、次の URL が必要です:

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

次のように書き換え/リダイレクトされます:

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

かなり長い間ネットで調べているのですが、これをどうやってやるのか分かりません。

また、ここではリダイレクトまたは書き換えが最善でしょうか?

API からユーザーを検証する以外の目的で URL を使用する予定はないので、そのページにアクセスした後、ユーザーをリダイレクトするだけです。

答え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: を実行するとおっしゃっているので、書き換えを使用します。2 つのリダイレクトを送信することにはまったく意味がありません。さらに、これは検索エンジンにとって悪い習慣です (この場合、このようなことは起こらないことはわかっていますが、SEO にとって悪いのであれば、ユーザーにとってもあまり良いことではないと思われるため、言及しておきます)。

RewriteRule の正規表現と以前の条件では、これら 2 つのクエリ文字列パラメータがその順序になっていることが想定されていることに注意してください。順序を強制しないようにするには、複数の行が必要になります。ただし、問題にはならないと思います。

関連情報