特定の URL への Nginx リダイレクト

特定の URL への Nginx リダイレクト

私たちのサイトの nginx のサーバー ブロックには、次の場所ディレクティブがあります。

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

古いフォーラム ソフトウェアの特定の URL をリダイレクトしたいと考えています。URL は次のようになります。

https://www.example.com/forums/forumdisplay.php?f=105

これまでのところ、私が試したものはどれもこの URL に一致しないようです。/ の場所でいくつかの異なる書き換えステートメントを試し、最も長い一致が優先されると考え、完全一致も試しました。

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

これは機能しません。この URL からはまだ 404 が表示されます。このリダイレクトはどこでどのように実行すればよいですか?

答え1

1 つのアプローチは、次のものを使用することです。

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

/forums/forumdisplay.phpこのアプローチは、クエリ引数が 105 に設定されているURL と一致しf、追加のクエリ引数が存在する可能性があります。

コメントの例では完全なURLと完全に一致する必要がありますが、URLが

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

関連情報