0

一部のトラフィックをあるベース ドメインから別のベース ドメインにリダイレクトする現在の Nginx ルールの例を次に示します (DNS 移行の結果)。

location ~* /(var1|var2|var3) {
    rewrite ^ http://newurl.com$uri? permanent;
}

したがって、次の URL の上の URL を使用すると、次の URL にoldurl.com/var1/foo
適切にリダイレクトされます。newurl.com/var1/foo

現在、このアプローチを使用しoldurl.com/fooても、設計どおりであり、必要な新しいドメインにリダイレクトされません。

しかし、私たちが現在抱えている問題は、location ステートメントで見つかったキーワードが URL のどこかで使用されている場合、リダイレクトされることです。/###/URL シーケンスの最初のフォルダーで見つかった変数に対してのみパターン マッチを行います。

言い換えればoldurl.com/var1/foo
、リダイレクトしたいのですが、そうではありませんoldurl.com/foo/var1

現在の正規表現ルールを考えると、URL に var1 が見つかり (2 番目の位置にありますが)、リダイレクトされます。
言い換えれば、oldurl.com/foo/var1
リダイレクトしnewurl.com/foo/var1
ますが、私たちはそれを望んでいません。

/###/私の正規表現は、コードの最初のブロックのみに対してパターン マッチを行うにはそれほど気の利いたものではありません。誰かが適切な正規表現/nginxステートメントで私を助けることができますか?

4

1 に答える 1

0

^これは正規表現なので、次のように URL パスの先頭に固定する必要があります。

location ~* ^/(var1|var2|var3) {
    rewrite ^ http://newurl.com$uri? permanent;
}
于 2013-05-15T12:38:11.990 に答える