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ファイルコマンドの使用

1. コマンドの紹介ファイル コマンドは、ファイルの種類を識別するために使用されます。ファイル チェ...

openlayers6 マップオーバーレイの一般的な 3 つの用途 (ポップアップウィンドウマーカーテキスト)

目次1. 前に書く2. ポップアップウィンドウを実装するためのオーバーレイ2.1 vueページのad...

現在のマウススライドの座標を取得するVue+openlayer5メソッド

序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

表 td 画像水平および垂直中央揃えコード

HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...

一般的な XHTML タグの使用方法の紹介

XHTML には多くのタグがありますが、頻繁に使用されるのはごくわずかであり、習得する必要があるのは...

Zabbix 監視 Docker アプリケーション構成

コンテナの応用はますます一般的になっていますが、大量のコンテナをどのように管理すればよいのでしょうか...

良いデザインについて

<br />「良いデザインとは何か」と答える 1 万人に対して、少なくとも 1 万 1 ...

ネイティブ js カプセル化シームレスカルーセル機能

ネイティブjsカプセル化シームレスカルーセルプラグイン、参考までに、具体的な内容は次のとおりです。例...

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...

MySQL カーソルの定義と使用法

カーソルの作成まず、MySql でデータ テーブルを作成します。 存在しない場合はテーブルを作成 `...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

Windows に MySQL 5.7.18 の解凍バージョンをインストールするチュートリアル

1. インストールプロセスMySQL バージョン: 5.7.18 1. my.ini ファイル(簡易...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

CentOS7にNginxをインストールして自動起動を設定する方法

1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...