nginx でネストされた if メソッドを実装する方法

nginx でネストされた if メソッドを実装する方法

Nginx はネストされた if ステートメントをサポートしておらず、if ステートメントでの論理判断も許可しません。次のエラーが報告されます。

nginx: [emerg] 「if」ディレクティブは許可されていません

ビジネスで複数の条件判断が必要な場合は、中間変数の助けを借りて実装することができます。

例えば、弊社のウェブサイトは PC 側に複数のサブドメインがありますが、モバイル側にはドメイン名が 1 つしかありません。その対応関係は以下のようになります。

  • www.test.com --> m.test.com
  • sub1.test.com --> m.test.com/sub1
  • sub2.test.com --> m.test.com/sub2
  • sub3.test.com --> m.test.com/sub3

達成される効果:モバイル端末でPCドメイン名にアクセスすると、対応するモバイル端末ドメイン名に301ジャンプする

nginx の書き換えルールは次のとおりです。

# モバイル端末ですか? $mobile 0 を設定します。
$http_user_agent の場合、(モバイル|ノキア|iPhone|iPad|Android|サムスン|HTC|ブラックベリー) {
  $mobile を 1 に設定します。
}

# サブドメインを取得します。$prefix 1 を設定します。
$host が "sub1.test.com" の場合 {
  $prefix 2 を設定します。
}
$host が "sub2.test.com" の場合 {
  $prefix 3 を設定します。
}
$host が "sub3.test.com" の場合 {
  $prefix 4 を設定します。
}
$sign を "${mobile}${prefix}" に設定します。
($sign = 11)の場合{
  ^(.*) http://m.test.com$1 を永続的に書き換えます。
}
($sign = 12)の場合{
  ^(.*) http://m.test.com/sub1$1 を永続的に書き換えます。
}
($sign = 13)の場合{
  ^(.*) http://m.test.com/sub2$1 を永続的に書き換えます。
}
($sign = 14)の場合{
  ^(.*) http://m.test.com/sub3$1 を永続的に書き換えます。
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginx + php の「入力ファイルが指定されていません」の解決策
  • Nginxのif文の判定条件と複数条件判定の詳しい解説
  • Nginxはifの複数判定設定方法の例を実装します
  • Nginx の IF ステートメントで数学的な比較関数を実装する
  • Nginx での IF、AND、OR ステートメントの使用例
  • Nginx の if 文と正規表現を組み合わせて文字列を切り捨てる

<<:  MySQL 5.7.18 Green Edition のダウンロードとインストールのチュートリアル

>>:  フォームで完全な選択または逆選択効果を実現する JavaScript

推薦する

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...

Docker rocketmq デプロイメントの実装例

目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...

Linux システム ディレクトリ sys、tmp、usr、var の詳細な説明。

Linux 初心者から Linux マスターへの成長の道: Linux システム ディレクトリ s...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...

AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

最近何もすることがないのでCSSをいじっていますより良いアニメーションライブラリTweenMaxを見...

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

MySQLストアドプロシージャの原理と使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの原理と使用方法を説明します。ご参考ま...

Pycharm2017はpython3.6とmysqlの接続を実現します

この記事では、pycharm2017でpython3.6とmysqlを接続する方法を参考までに紹介し...

JavaScript配列についてさらに詳しく知るのに役立つ記事

目次1. 配列の役割: 2. 配列の定義: 1. コンストラクタを通じて配列を作成する2. リテラル...

divとtableの選択と組み合わせ方について簡単に説明します

ページレイアウトは、Web ページを扱い始めた頃からずっと気にかけていたことです。初期のテーブル構造...

mysql data_dirの変更によって発生するエラー問題を解決する

今日は、新しく購入した Alibaba Cloud ECS 環境 (Ubuntu 16.04 LTS...

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...

uni-app で scss を使用するサンプル コード

遭遇した落とし穴私は午後中ずっと、uni-app で scss を使用する際の落とし穴を解決すること...