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は虫眼鏡付きの検索ボックスを実装します

推薦する

JSはモバイル端末の画面を1つずつ上下にスライドさせる機能を実装します

この記事では、モバイル端末を一度に1画面ずつ上下にスライドさせるためのJSの具体的なコードを参考まで...

MySQLのカバーインデックスに関する知識ポイントのまとめ

インデックスにクエリする必要があるすべてのフィールドの値が含まれている(またはカバーしている)場合、...

Linux システムのユーザー管理コマンドの概要

ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...

CSSを使用して3Dフォトウォール効果を作成する

CSS を使用して 3D フォト ウォールを作成します。具体的なコードは次のとおりです。 <!...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

React スキャフォールディングの構築方法を学ぶ

1. フロントエンドエンジニアリングの複雑さいくつかの小さなデモ プログラムを開発するだけであれば、...

Vue の DOM の非同期更新の簡単な分析

目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

今日はサーバーにログインして、データベース内のいくつかのものを変更する準備をしました。しかし、パスワ...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...

Docker イメージのエクスポート、インポート、コピーの例の分析

最初の解決策は、イメージを公開イメージリポジトリにプッシュし、それをプルダウンすることです。 2 番...

VueプロジェクトにPWAを導入する手順

目次1. 依存関係をインストールする2. vue.config.js ファイルで pwa を設定しま...

JavaScript を使用して QR コードを解析する 3 つの方法

目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...