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

推薦する

ブラウザをJavaScriptで対話させる方法

目次1. 最も単純な例2. 音声の速度とピッチをカスタマイズする3. 音量の調整方法4. よく使われ...

JavaScript の条件付きアクセス属性と矢印関数の紹介

目次1. 条件付きアクセス属性2. アロー関数の紹介1. 条件付きアクセス属性?. は ES2020...

Tomcat を再デプロイした後にイメージやその他のリソースが自動的に削除される問題を解決します

昨日は写真をアップロードしてリンクを返す機能を実装していました。プロジェクトが Tomcat に再デ...

JavaScript でプロトタイプ パターンを実装する方法

概要プロトタイプ パターンは、プロトタイプ インスタンスによって作成されるオブジェクトの型を指し、こ...

docker ベースの redis-sentinel クラスターの構築例

1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...

HTML コメント HTML 内のテキストコメントをマークするための記号

HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...

MySQLクエリツリー構造方式

目次MySQL クエリツリー構造1. ツリー構造について2. MySQLでカスタム関数を定義する方法...

HTML 初心者のためのベストプラクティス 15 選

HTML 初心者向けのベストプラクティスを 30 個紹介します。 1. タグを閉じたままにする過去に...

js を使用してファイルが UTF-8 でエンコードされているかどうかを判断する方法

従来の解決策FileReader を使用して UTF-8 形式のファイルを読み取り、ファイルの内容に...

イラスト風ウェブサイトホームページデザイン ウェブサイトデザインの新トレンド

視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...

シャトルボックス機能を実装するためのVueの詳細なコード

Vue - シャトルボックス機能を実装します。効果図は次のようになります。 CS 。移行{ ディスプ...

jsは古典的なマインスイーパゲームを実装します

この記事の例では、古典的なマインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有し...

MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法

1. デフォルトでインストールされているMySQLの文字セットを確認するmysql> '...

MySQL マルチバージョン同時実行制御 MVCC の詳細な研究

MVCC MVCC (Multi-Version Concurrency Control) は、マル...