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

推薦する

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

Linuxでブーストライブラリをインストールするための完全な手順

序文Boost ライブラリは、標準ライブラリのバックアップとして機能し、C++ 標準化プロセスの開発...

WeChat 8.0の爆発的な特殊効果を実現するために300行以上のCSSコードが必要

WeChat 8.0 アップデートの主な特徴は、アニメーション絵文字のサポートです。送信するメッセー...

Vueフォームバインディングとコンポーネントの詳細な説明

目次1. 双方向データバインディングとは1. データの双方向バインディングを実装する必要があるのはな...

Windows 上の MySQL 5.6 で my.ini 設定ファイルを見つける方法

忘れてしまった場合に後で戻って確認できるようにメモしておいてください。問題の説明:今日はちょっとした...

Dockerfile echoは、指定されたファイル内の複数行のテキストを実装する方法を指定します。

Dockerfile内の指定されたファイルに複数の行を追加します。echoの後の「$」記号に注意し...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

CSS3 Flex エラスティックレイアウトのサンプルコードの詳細な説明

1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...

WeChatアプレットでvantフレームワークを使用するための具体的な手順

目次1. アプレットのプロジェクト ディレクトリを開き、ファイルの場所を開きます。 2. プロジェク...

Enterキーを押すとフォームが自動的に送信されます。予期せぬ発見

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

負のマージントップ値は、ラベルテキストと入力の間の垂直中央揃えの問題を解決します。

ラベルテキストと入力の垂直方向の中央揃えを調整するのは簡単ではありません。padding、verti...

MySQL 5.7 スレーブノードからマルチスレッド マスター スレーブ レプリケーションを構成する方法の詳細な説明

序文MySQL は MySQL 5.6 からマルチスレッド レプリケーションをサポートしていますが、...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...