NGinx リダイレクトをサブドメインを除くメインドメインにのみ適用する

NGinx リダイレクトをサブドメインを除くメインドメインにのみ適用する

たとえば、複数のホストでリッスンする PHP アプリケーションをセットアップしています。

maindomain.com a.maindomain.com b.maindomain.com

maindomain.com 内の一部のルートをリダイレクトする必要があります。そのために、以前このリダイレクトを設定しました:

rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

これにより、maindomain.com/myroute/ へのすべてのリクエストが maindomain.com/new-myroute にリダイレクトされます。

問題は、このリダイレクトが残りのサブドメインにも適用され、a.maindomain.com/myroute が maindomain.com/new-myroute にリダイレクトされることです。

これらのサブドメインをリダイレクトの適用から除外し、ルート タイプ a.maindomain.com/myroute はそのまま残したいと思います。

私はさまざまな書き直しを試しました。

rewrite ^https://maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

rewrite ^maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

rewrite maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

しかし、どれも機能しません。

メインドメインにのみリダイレクトを適用する方法について何かアイデアはありますか? よろしくお願いします。

編集: サーバー名にはワイルドカードが含まれており、存在する可能性のあるすべてのサブドメインをリッスンします。

server_name maindomain.com *.maindomain.com;

答え1

別のサーバーブロックを使用するか、if条件を使用します

if ($host = "example.com") {
    rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
}

関連情報