2016-12-25 7 views
2

私は古いサイトのURLを新しいサイトにリダイレクトしたいと思います。しかし、新しいサイトは異なるページ名を持ち、言語の文字も変更されています。nginxは古いサイトのURLをリダイレクトし、1つの言語の接尾辞のみを変更します

例えば:

en/about/infoは、私がこれについては行くだろうかka/com/information

map $request_uri $redirect_uri { 

<lang>/about/info/ $lang/com/information/ 

} 

任意のアイデアに行きますen/com/information

しかし

ge/about/infoにリダイレクトしますか?多くのURLがありますので、これらのURLを各言語ごとにハードコードで記述したくありません。

答えて

0

mapディレクティブは、正規表現の一部を取得できますが、マップされた結果でそのキャプチャを使用することはできません。

langという名前のキャプチャを作成し、を使用して、の後にマップされた変数が評価されます。たとえば、次のように

map $request_uri $redirect_uri { 
~*(?<lang>/\w\w/)about/info/ com/information/; 
} 

そしてserverまたはlocationブロック内:$redirect_uriの値はif文の中で評価された後$langにのみ作成されていることを

if ($redirect_uri) { 
    return 301 $lang$redirect_uri; 
} 

は注意してください。

詳細はthis documentを参照してください。

関連する問題