異なるドメイン名への PC または携帯電話のアクセスを区別するように Nginx を構成する方法

異なるドメイン名への PC または携帯電話のアクセスを区別するように Nginx を構成する方法

新しい公式サイトはオンラインですが、携帯電話で新しい公式サイトにアクセスすると、エクスペリエンスが非常に悪くなります。携帯電話で新しい公式サイトにアクセスする場合は、古い公式サイトにアクセスする必要があります。Nginx の設定を変更することで、自動ジャンプを実現できます。

まず、新しい公式サイトのNginx設定ファイルにジャンプ判定を追加し、ユーザーエージェントを使用してソースがモバイル端末かPC端末かを判別します。

サーバー{
  聞く 80;
  server_name www.7d.com 7d.com; // 新しい公式ウェブサイトのドメイン名の書き換え .* https://$host$request_uri last;
}

サーバー{
  443 ssl を聴く;
  server_name www.7d.com 7d.com; // 新しい公式ウェブサイトのドメイン名 root /data/7d;
  文字セット utf-8;
  ssl_certificate /usr/local/nginx/_.7d.com.crt;
  ssl_certificate_key /usr/local/nginx/_.7d.com.key;

  /s1$ http://s1.7d.com/start を最後に書き換えます。

  if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // リダイレクト判定書き換え ^/(.*)$ https://m.7d.com$uri redirect; // リダイレクトとは302リダイレクト(一時転送)のこと 
  }   
  …
}

その後、古い公式サイトの設定ファイルを新しいドメイン名に変更します。モバイルアクセスのリクエストでない場合は、新しい公式サイトにジャンプするためのジャンプ判断も必要です。

 サーバー{
  聞く 80;
  server_name m.7d.com; // 古い公式ウェブサイトのドメイン名の書き換え .* https://$host$request_uri last;
}

サーバー{
  443 ssl を聴く;
  server_name m.7d.com; // 古い公式ウェブサイトのドメイン名 root /data/7d;
  文字セット utf-8;
  ssl_certificate /usr/local/nginx/_.7d.com.crt;
  ssl_certificate_key /usr/local/nginx/_.7d.com.key;

  /s1$ http://s1.7d.com/start を最後に書き換えます。

  if ( $http_user_agent !~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // ~ の前に ! を追加します。モバイル端末からアクセスしない場合は、新しい公式ウェブサイトに戻ります。
    書き換え ^/(.*)$ https://m.7d.com$uri redirect; // リダイレクトは 302 リダイレクトを意味します}   
  …
}

このように、携帯電話が新しい公式サイト 7d.com のドメイン名にアクセスすると、実際には古い公式サイトのコンテンツにアクセスすることになります。ブラウザのアドレスバーをクリックすると、ドメイン名が m.7d.com であることがわかります。

実際は、HTTP_USER_AGENT を元に判断し、Nginx を使って 302 ジャンプをします。書き換え文の最後の単語の redirect を permanent に変更すると、301 ジャンプ(恒久転送)を意味します。

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

以下もご興味があるかもしれません:
  • マルチポートおよびマルチドメイン名アクセスのNginx構成の実装
  • nginx での tp5 の設定アクセスを変更する問題を解決する
  • 同じ IP のアクセス頻度を制限するように nginx を設定する方法
  • nginx ssl を設定して https アクセスを実装する手順 (初心者向け)
  • Nginxのアクセス制限設定の詳細な説明
  • SSL モジュール構成を使用して HTTPS アクセスをサポートする nginx の詳細な説明
  • nginx を使用して wgcloud へのアクセスを構成する方法

<<:  N キロメートル以内のデータを検索する MySQL の簡単な例

>>:  vueはEle.me UIを使用してteambitionのフィルタリング機能を模倣します

推薦する

Reactコンポーネント通信の詳細な説明

目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...

Vue での weixin-js-sdk の一般的な使用方法の詳細な説明

リンク: https://qydev.weixin.qq.com/wiki/index.php?ti...

ウェブサイトでページコンテンツや情報を直接コピーできない問題を解決する方法

最近では、多くのウェブサイトでは、ページ上の特定のコンテンツや情報を直接コピーすることは許可されてお...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

JavaScript で実装された 6 つの Web ページ画像カルーセル効果の詳細な説明

目次1. マウスがカルーセル モジュール上を通過すると、左右のボタンが表示され、モジュールを離れると...

有名なウェブサイトのロゴに使われている25種類のフォントのコレクション

この記事では、25 の有名な Web サイト (Google、Yahoo、Twitter、Digg ...

MySQL UPDATE ステートメントの「典型的な」落とし穴

目次1. 問題のあるSQL文たとえば、次の図のような質問をした人がいました。 問題は次のように要約で...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

mysql ダーティ ページとは何ですか?

目次ダーティページ(メモリページ)ダーティページが表示されるのはなぜですか?メモリ管理メカニズムの簡...

「さらに表示」ボタンによる複数行テキストの切り捨てに関する考察

最近、たまたまこの小さな要件に遭遇しました。昔、JS を使用してこれを処理したことを覚えていますが、...

MySQL binlog の使用方法の詳細な説明

binlog は、MySQL のすべての DML 操作を記録するバイナリ ログ ファイルです。 bi...

MySQL エラー「すべての派生テーブルには独自のエイリアスが必要です」の解決方法

MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...

Python の MySQL データベース LIKE 演算子の詳細な説明

LIKE 演算子は、列内の指定されたパターンを検索するため、WHERE 句で使用されます。文法: 列...

docker で PostgreSQL データベースをインストールして永続化する方法

Dockerのインストール手順をスキップする1. postgresqlイメージを取得する docke...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...