nginx rewriteを使用してURLをリダイレクトする方法

nginx rewriteを使用してURLをリダイレクトする方法

最近仕事でnginxの設定を変更する必要が頻繁にあり、nginxでrewriteを使用する方法を学びました

URLリダイレクト

ここで言う URL リダイレクトとは、ユーザーが URL にアクセスしたときに別の URL にリダイレクトされることを意味します。

一般的なアプリケーション シナリオは、複数のドメイン名を同じ URL にリダイレクトすることです (たとえば、古いドメイン名を新しいドメイン名にリダイレクトします)。

静的ファイルリクエストを CDN などにリダイレクトします。

ユーザーのデバイスに応じて、異なるサイト(PC版、WAP版)等にジャンプします。

URLリダイレクトは、jsを通じてページにwindow.locationを設定することで実現できます。

PHPでヘッダーを設定することでも実現できます

もちろん、nginxの書き換え機能を使って実現することもできます。

nginx 書き換えモジュール

rewriteはnginxの静的書き換えモジュールです

基本的な使用法は、パターンの書き換えとフラグの置き換えです。

patten は正規表現です。patten に一致する URL は replace として書き換えられます。flag はオプションです。

たとえば、古いドメイン名を新しいドメイン名にリダイレクトする

サーバ
{
 聞く 80;
 サーバー名 www.old.com;
 「.*」をhttp://www.new.comに書き換えます。
}

新しいドメインにリダイレクトするときにパスを維持する

サーバ
{
 聞く 80;
 サーバー名 www.old.com;
 「^/(.*)$」を書き換える http://www.new.com/$1;
}
書き換えとロケーションが連携して画像ファイルを CDN にジャンプします
場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
 有効期限は30日です。
 "^/uploadfile\/(.*)$" http://static.XXX.com/uploadfile/$1 を書き換えます。
}

書き換え後にフラグを追加できます。フラグ タグは次のとおりです。

lastはApacheの[L]マークに相当し、書き換えが完了したことを示します。

break はマッチを終了し、次のルールにマッチしなくなります。

リダイレクトは 302 一時リダイレクトを返します。アドレス バーにはリダイレクトされたアドレスが表示されます。

永久リターン301永久リダイレクトアドレスバーにはジャンプ後のアドレスが表示されます

nginx rewrite を使用して URL リダイレクトを実現する上記の方法は、私が皆さんに共有できるすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginxの書き換えモジュールの詳細な説明
  • Nginx URL 書き換えメカニズムの原理と使用例
  • Nginx の書き換え正規マッチング書き換え方法の例
  • nginx のロケーションと書き換えの使用法の詳細な説明
  • URLパラメータに応じたnginxの書き換えと場所の詳細な説明
  • Nginx 書き換え 書き換えの基本と例の共有
  • Nginx Rewrite ルールと使用方法の紹介とスキルの例
  • nginx の書き換え擬似静的設定パラメータと使用例
  • nginx 書き換え関数の使用シナリオの分析

<<:  MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

>>:  JavaScript はクラス宝くじアプレットを実装します

推薦する

Dockerコンテナが停止できない問題の解決方法

解決策は次のとおりです。 1. コンテナを強制削除する docker rm -f ジェンキンス2. ...

Vue.jsはコンポーネントを通じてアイコンを処理します

アイコン処理ソリューションこの記録の目的は、element-plus 以外のアイコンをコンポーネント...

Mysql での結合操作

結合の種類1. 内部結合: 結合関係を持つ 2 つのテーブル内のフィールドは、結合関係を満たすレコー...

DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...

MySQL をクリーンにアンインストールする方法 (テスト済みで効果的)

Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...

...

Vue 要素と Nuxt の使用に関するヒントを共有する

1. 要素時間選択提出フォーマット変換例えば 2018年9月7日金曜日 00:00:00 GMT+0...

JavaScript のデシェイクとスロットリングの例

目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...

MySQLクエリインターセプトの詳細な分析

目次1. クエリの最適化1. MySQLチューニングの概要2. 小さなテーブルが大きなテーブルを動か...

Vue検証コードコンポーネントの使い方の詳しい説明

この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...

MySQL テーブルの断片化を解消し、スペースを再利用する方法

目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...

Bootstrap 3.0 学習ノートのボタンとドロップダウン メニュー

前回の記事はBootstrap CSS部分の簡単なレビューであり、多くの詳細が見落とされていました。...

表のセル間隔とセルパディングの違いの詳細な説明

テーブルとは何ですか?セルセルで構成されています。表では、<td> の数は、<tr...

MySQLインデックスとは何ですか?わからない場合は聞いてください

目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...

MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....