Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

SEO とセキュリティを考慮して、301 リダイレクトが必要です。以下の一般的な処理には Nginx が使用されます。

成果を達成する

以下のアドレスは、https://chanvinxiao.com のルートドメイン名にリダイレクトする必要があります。

  • http://chanvinxiao.com (http は www なし)
  • http://www.chanvinxiao.com (http と www の組み合わせ)
  • https://www.chanvinxiao.com (https + www)

301と302の違い

301は永続的なリダイレクト、302は一時的なリダイレクトです。主な違いは検索エンジンがそれをどのように扱うかです。

  1. 301: 検索エンジンは重みとPR値を転送します
  2. 302: 検索エンジンは追加の処理を実行しません

検索エンジンに元のアドレスが存在しないと認識させ、新しいアドレスに完全に転送させたいので、301を使用します。

http から https へジャンプ

最も簡単な方法は、サーバーで直接リダイレクトアドレスを返し、途中に 301 ステータスコードを追加することです (そうでない場合、デフォルトは 302 です)

サーバー{
 聞く 80;
 301 https://$host$request_uri を返します。
}
  • return と rewrite はどちらも Nginx の rewrite モジュールの命令に属します。ここではパスを変更する必要がないため、return を使用する方が便利です。
  • $host と $request_uri は、Nginx http モジュールの埋め込み変数です。2 つの変数を組み合わせると、リクエスト内の http:// を削除した結果と同じになります。

wwwはルートドメイン名にジャンプします

これはhttpsでのみ処理する必要があります。なぜなら、すべてのhttpはhttpsにジャンプするからです。

サーバー{
 443 ssl を聴く;
 サーバー名 ~^(?<www>www\.)?(.+)$;
 もし $www であれば
 301 https://$2$request_uri を返します。
 }
...
  • ここでは、server_name の正規表現マッチング機能を使用します。値の前に ~ を追加することで有効にできます。PCRE 構文をサポートしています。
  • 正規表現は、www. というプレフィックスがあるかどうかを確認し、ルートドメイン名をキャプチャするために使用されます。2つの変数が生成されます。1つは名前付きキャプチャ変数 $www で、もう1つは数値キャプチャ変数 $2 です。
  • 連続キャプチャ変数の使用をサポートしていない場合、エラーが報告されます(不明な「1」変数)。そのため、?<www> が追加され、$1 の値が $www に割り当てられます。

ジャンプの回数を減らす

上記の設定は要件を満たしていますが、欠陥があります。http://www.chanvinxiao.com は最初に https://www.chanvinxiao.com にジャンプし、次に https://chanvinxiao.com にジャンプします。2 回目のジャンプは、最初のジャンプほど良くありません。したがって、1 つのステップで実行することをお勧めします。http 構成を次のように変更します。

サーバー{
 聞く 80;
 サーバー名 ~^(?:www\.)?(.+)$;
 301 https://$1$request_uri を返します。
}

httpに対応するサーバーで、server_nameを通常モードに変更し、$hostを取得したルートドメイン名$1に置き換えます。
wwwはここでは直接破棄されるので、キャプチャする必要はありません。キャプチャせずにグループ化のみを行うことを示すには?:を使用します。そのため、背後のルートドメイン名は$1になります。
その結果、元のドメイン名に www が含まれているかどうかに関係なく、www なしの https ルート ドメイン名にリダイレクトされます。

要約する

上記の構成では特定のドメイン名は必要ないため、互換性と移植性に便利です。Nginx の次の機能を使用します。

  • server_name の正規表現マッチング
  • 戻り命令はステータスコードとアドレスを受け取る
  • $host および $request_uri 埋め込み変数

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装する方法に関するこの記事はこれで終わりです。Nginx による https ルートドメイン名への 301 リダイレクトに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • NGINX が https から http にジャンプするためのソリューションの詳細な説明
  • nginx rewriteを使用してURLをリダイレクトする方法
  • Nginx サーバーで HTTP 301 を www 付きのドメイン名にリダイレクトする方法
  • nginx に https アクセスを強制する方法 (http が https にジャンプします)
  • さまざまなブラウザ言語に応じて Nginx ページリダイレクトを設定する方法
  • ホームページジャンプの問題を解決するnginxの詳しい説明
  • nginx 301 リダイレクトを www 付きドメイン名にリダイレクトする詳細な説明
  • nginx がアップストリーム アドレスにジャンプしない問題の解決方法
  • nginx ロードバランシングを介して https にリダイレクトする方法
  • Nginxのmapコマンドを使用してページをリダイレクトする
  • thinkPHP 5をnginxでデプロイするときにホームページにのみリダイレクトされる問題を解決する
  • NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします
  • Nginx 書き換えジャンプの適用シナリオの詳細な説明
  • nginx で HSTS を有効にしてブラウザを HTTPS アクセスにリダイレクトする方法の詳細な説明
  • nginx での書き換えジャンプの実装
  • Nginx におけるロケーション マッチングとリライト リダイレクトの詳細な説明
  • Nginx 隠しリダイレクト (リダイレクト後もブラウザ URL は変更されません)

<<:  jQuery カスタム虫眼鏡効果

>>:  Vueは虫眼鏡付きの検索ボックスを実装します

推薦する

WeChatアプレットは写真の撮影とアルバムからの写真の選択を実現します

この記事では、WeChatアプレットで写真を撮ったり、アルバムから写真を選択したりするための具体的な...

MySQL サーバー IO 100% 分析および最適化ソリューション

序文ストレス テスト中に、リソース使用のボトルネックによって発生する最も直接的なパフォーマンスの問題...

HTML CSS を使用して div またはテーブルを指定した位置に固定する方法

CSSコードコンテンツをクリップボードにコピー.bottomTable{背景色: rgb (249,...

React双方向データバインディングの原理についての簡単な説明

目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...

Mac VMware Fusion CentOS7 静的 IP 構成チュートリアル図

目次CentOS7をインストールする静的IPの設定viを使用してファイルを編集するCentOS7をイ...

MySQL パスワード変更方法の概要

MySQL 5.7 より前のバージョンのパスワードを変更する方法:方法1: SET PASSWORD...

MySQL カーディナリティ統計の簡単な分析

1. カーディナリティとは何ですか?カーディナリティとは、MySQL テーブルの列内の異なる値の数を...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

Dockerを使用してphabricatorをインストールする方法

ここでは Ubuntu 16.04 システムを使用しています。 dockerを使用したインストールh...

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...

HTML 選択ボックスのプレースホルダーの作成に関する問題

テキスト入力でプレースホルダーを使用していますが、問題なく動作します。しかし、選択ボックスにはプレー...

IE6/IE7/IE8/IE9/FF 向け CSS ハック (概要)

IE8.0の正式版をインストールしたので、基本的なCSS HACKをいくつかまとめてみました。We...

独立した IP を介して Windows コンテナ イントラネットの Docker に直接アクセスする方法

Docker では、ポート マッピングを使用して、Docker コンテナーのサービスをホスト マシン...

MySQLdump コマンドを使用した MySQL データの移行

このソリューションの利点はシンプルさと使いやすさですが、欠点はダウンタイムが長くなることです。 した...

Vue でクラスとスタイルを使用して v-bind バインディングを使用するいくつかの方法

要素にクラスを追加/削除することは、プロジェクト開発では非常に一般的な動作です。たとえば、Web サ...