リダイレクトのためにmapディレクティブを使用しています。 私はいくつかのワイルドカードを設定するためにきましたが、それは動作しません:Nginxのマップリダイレクトのワイルドカード
/notizie~* /news;
私は「/ notizie/$文字列」のようなすべてのURLが「/ニュース」にリダイレクトされるべきであるとします。
どういうところが間違っていますか?
リダイレクトのためにmapディレクティブを使用しています。 私はいくつかのワイルドカードを設定するためにきましたが、それは動作しません:Nginxのマップリダイレクトのワイルドカード
/notizie~* /news;
私は「/ notizie/$文字列」のようなすべてのURLが「/ニュース」にリダイレクトされるべきであるとします。
どういうところが間違っていますか?
を好きなら:
そうmap $request_uri $redirect_uri {
~^/notizie(?<suffix>.*)$ /news$suffix;
default $request_uri;
}
:
map $uri $redirect_uri {
~^/notizie(?<suffix>.*)$ /news$suffix;
default $uri;
}
先ほど301 HTTPコードでリダイレクトが必要な場合は、正規表現とlocation
を使用することができます。
location ~* ^/notizie(.*)$ {
return 301 $scheme://$host/news$1;
}
~*
-
$1
大文字と小文字を区別しない正規表現を特定する - に捕捉一致を意味最初の括弧
return
- 要求処理の終了を停止すると、指定されたコードとURLが返されます。
$host
- 事前に定義された変数であり、あなたはそれをハードコーディングする、クエリのparamsは、あなたのリダイレクトのために重要である場合は、
これは動作します: 〜/ notizie /(〜*)/ news; "whatever/notizie/whatever"のようなURLに一致します。 "/ notizie /"で始まるURLに一致するようにしました。 接尾辞を複製する必要はありません。 to/news – sergiod
'〜^/notizie'に' '文字列の開始 ''を意味する'^'があるので、'/notizie'で始まるuriにのみマッチします。接尾辞を気にしない場合は、単に '〜^/notizie/news;'のように削除してください。 – danielgpm
これでOKです。どうもありがとう :) – sergiod