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

推薦する

GitHub のサードパーティ認証方式を Vue で実装する例

目次OAuth アプリの作成コードを取得するaccess_tokenを取得するユーザー情報を取得する...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

Vueコンポーネントのカスタムイベントの詳細な説明

目次要約する <テンプレート> <div> 要素 <h2>{{メ...

CentOS8 - bash: 文字化けとその解決方法

この状況は通常、中国語言語パックがインストールされていないか、デフォルトの言語設定に問題があるために...

Linux でコマンドまたはプロセスの実行時間を調べる方法

Unix ライクなシステムでは、コマンドまたはプロセスの実行がいつ開始されたか、またプロセスがどのく...

HTML チュートリアル: title 属性と alt 属性

XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...

CSS3に基づいてiPhoneを描く

結果:実装コードhtml <div class='iphone'> &l...

ベースタグとは何ですか? また、それは何をするのですか?

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...

DockerにRabbitMQを素早くインストールする方法

1. 画像を取得する #Webコントロールページを含むバージョンを指定します docker pull...

Docker Compose ワンクリック ELK デプロイ方式の実装

インストールFilebeat は、より軽量でより安全なため、Logstash-Forwarder に...

Nginx アクセス ログとエラー ログ パラメータの説明

例: nginx ログには、アクセス ログとエラー ログの 2 つの主な種類があります。アクセス ロ...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

JS はシンプルなカレンダー効果を実装します

この記事では、シンプルなカレンダー効果を実現するためのJSの具体的なコードを参考までに紹介します。具...

過去2年間のユーザーエクスペリエンス

<br />国内のウェブサイトが本格的に普及し、ユーザーエクスペリエンスに重点が置かれる...

Vue+ElementUI はページング関数を実装します - mysql データ

目次1. 問題2. 解決策2.1 ページングコンポーネント2.2 データベースデータを取得する関数:...