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

推薦する

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

Linux で特定のプログラムを見つけるための whereis の例の詳細な説明

Linuxは特定のプログラムを見つけますwhereis コマンドは主にプログラム ファイルを検索し、...

超シンプルな QPS 統計手法 (推奨)

過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...

Docker で nginx のログレベルを調整する方法

目次はじめにNginx Dockerファイル新しい会議もっと参考文献はじめに最近、アプリケーションの...

よく使われるHTMLタグのインライン要素とブロックレベル要素の詳細な説明

ブロック要素HTMLタグ分類の詳細* 住所 - 住所* blockquote - ブロック引用* c...

INS と DEL を使用してドキュメントの変更をマークする方法の詳細な説明

ins と del は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、...

JS 関数とコンストラクタを簡単に理解する

目次1. 概要1.1 Functionコンストラクタを使用して関数を作成する1.2 機能と目的2. ...

Windows 10 での MySQL 5.7.21 winx64 のインストールと設定方法のグラフィック チュートリアル

mysql 5.7.21 winx64 のインストールと設定方法: MySQLのコミュニティバージョ...

Dockerを使用して外部からアクセス可能なMySQLを構築する詳細な説明

MySQL 8.0をインストールする docker run -p 63306:3306 -e MYS...

Vue で v-for を更新する方法

ヒント:配列変更メソッドによりv-forが更新され、ページが更新されます。配列を変更しないメソッド:...

CSSはフロントエンドの画像変形の問題を完璧に解決します

Toutiao IT School で、CSS がフロントエンドの画像変形の問題を完璧に解決するとい...

Web デザイナーにはどのような知識体系が必要ですか?

製品設計者は、複雑で大規模な製造システムと多様な市場に直面しているため、知識体系には幅広さと深さの両...

IE6 フォントを定義できません: 13px サイズは無効です。IE6 は自動的に大きいフォント ソリューションを表示します。

数日前、Web ページのモジュールを調整していたとき、ページのフォント サイズを 13px に設定し...

ウェブタイポグラフィにおける致命的な意味的ミス 10 選

<br />これは、Steven D が書いた Web フロントエンド開発デザインの基本...

Linux に MySQL 8.0.19 をインストールするための詳細な手順と問題解決方法

最近Tencent Cloudサーバーを購入し、環境を構築しました。このメモは、これまで MySQL...