私たちのサイトの 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