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

推薦する

純粋なCSSでデジタルプラスとマイナスボタンを実装するための最適なソリューション

序文:デジタル加算ボタンと減算ボタンの実装には、次のような多くのソリューションがこれまでに使用されて...

Win10 VM 仮想マシンに Mac OS10.14 を完璧にインストールする (グラフィック チュートリアル)

最近、Apple の記者会見を見てとても興奮したので、Mac システムを体験して Apple の素晴...

MySQL 8.0.21 無料インストール版 設定方法 グラフィックチュートリアル

MySQLをインストールする6つの手順(インストールパッケージのみがインストール場所を選択できます)...

JavaScript JSON.stringify() の使用法の概要

目次1. 使用方法1. 基本的な使い方2. 2番目のパラメータ - フィルター3. 3番目のパラメー...

一般的な XHTML タグの紹介

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

VueとFlask間の通信の実装

axiosをインストールして通信を実装するここでは、axios を使用して Vue フロントエンドと...

Momentsで写真を整理するためのCSSコード

まず、Moments を開いて、写真の数が異なるいくつかのレイアウトを確認するか、以下の例を参照して...

MySQL で distinct メソッドを使用する詳細な例

明確な意味: distinctive は、一意のレコードの数を照会するために使用されます。つまり、d...

画像の盗難を防ぐために Nginx で Referer を設定する方法

サーバーの画像が他のウェブサイトからホットリンクされると、サーバーの帯域幅とアクセス速度に影響します...

MySQLでデータベースデータ保存ディレクトリを変更する方法

序文MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql に...

VMware vSphere 6.5 インストール チュートリアル (画像とテキスト)

vmware vSphere 6.5 は vSphere ソフトウェアのクラシック バージョンであ...

VueはElement el-uploadコンポーネントを使用してピットに足を踏み入れます

目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...

MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...

マップタグパラメータの詳細な紹介と使用例

マップ タグはペアで表示する必要があります。 <map> ....</map>...