Nginx を使用してリクエスト URI に URL パラメータを追加する

Nginx を使用してリクエスト URI に URL パラメータを追加する

サーバー ブロック内の特定のリクエスト URI に URL パラメータを追加しようとしています。

これまでのところ、次のものがあります:

if ( $request_uri = "/testing/signup" ) {
    rewrite ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 last;
}

location /testing/ {
    try_files $uri $uri/ /testing/index.php;
}

ただし、これは元のリクエストURIに独自のURLパラメータがない場合のみ機能します(例:www.example.com/testing/signup?abc=hello) 元の URL パラメータを保持し、独自のパラメータを追加したいと思います。

正規表現を if に変更しようとしました( $request_uri ~* "^/testing/signup" ) {が、ループが発生します。

誰か助けてくれませんか?

**** アップデート ****

これを試すために更新しました:

location /testing/ {
    rewrite ^/testing/signup$ /testing/signup?org=1231564 break;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

これは URL パラメータを渡しませんが、ログを確認すると、既存の URL パラメータと新しい URL パラメータの両方が args 変数にあることがわかります。しかし、これらを GET リクエストに取り込んでサーバーが処理できるようにするにはどうすればよいでしょうか?

2021/08/03 02:27:07 [notice] 3202#3202: *27 "^/testing/signup$" matches "/testing/signup", client: 146.75.168.54, server: example.com, request: "GET /testing/signup?id=1 HTTP/2.0", host: "www.example.com"
2021/08/03 02:27:07 [notice] 3202#3202: *27 rewritten data: "/testing/signup", args: "org=1231564&id=1", client: 146.75.168.54, server: example.com, request: "GET /testing/signup?id=1 HTTP/2.0", host: "www.example.com"

答え1

ServerFault へようこそ。

変数リクエストURI「完全な元のリクエストURI(引数付き)」が含まれています。これが、既存のパラメータを持つリクエストが元のコードでは機能しなかった理由です。代わりに、ウリあれは正規化された

無限ループは、必要なパラメータの存在を確認することで修正できます。Nginx はネストされた if 条件をサポートしていないため、別のロジックを使用できます。

したがって、次のコードは機能します...

error_page 418 @goodtogo;

location /testing/ {
    if ($arg_org != "") { return 418; }
    if ($arg_type_id != "") { return 418; }

    if ( $uri = "/testing/signup" ) { rewrite ^ /testing/signup?org=7689879&type_id=65454 redirect; }

    try_files $uri $uri/ /testing/index.php =404;
}

location / {}

location @goodtogo {
    try_files $uri $uri/ /testing/index.php =404;
}

手動で追加したパラメータに元のパラメータが追加されることに注意してください。そのため、 のようなリクエストの場合www.example.com/testing/signup?abc=hello、URI は に書き換えられますwww.example.com/testing/signup?org=7689879&type_id=65454&abc=hello

関連情報