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 はクラス宝くじアプレットを実装します

推薦する

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

Docker を使用した nextcloud パーソナル ネットワーク ディスクの構築に関するチュートリアル

目次1. はじめに2. 導入環境ツール4. 展開プロセス要約する1. はじめにNextcloud は...

TypeScriptにおけるunknownとanyの違いについて詳しく説明します

目次序文1. 不明 vs 任意2. 未知とあらゆるもののメンタルモデル3. まとめ要約する序文any...

mysql-connector-java.jar パッケージのダウンロード プロセスの詳細な説明

mysql-connector-java.jar パッケージのチュートリアルをダウンロードします: ...

Windows 10 でカスタムドメイン名をバインドするように Hexo と GitHub を構成する方法

Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...

CSS変数を使用してスタイルを変更する方法の例

質問js を使用して CSS 疑似クラス スタイルを変更するにはどうすればよいでしょうか?しかし、j...

データベースミドルウェアMyCatの紹介

1. Mycatの適用シナリオMycat は幅広いシナリオに合わせて開発されており、新しいユーザーが...

MySQL データベース アーキテクチャの詳細

目次1. MySQL アーキテクチャ2. ネットワーク接続層3. データベースサービス層4. 接続プ...

html-webpack-plugin' を使用してメモリ内に HTML ページ プラグインを生成します。

webpackjs ファイルをパッケージ化するときに、次に示すように、index.html インタ...

HTMLページが3秒後に自動的にジャンプする3つの一般的な方法

実際には、N 秒後にページを自動的にジャンプさせるにはどうすればよいかという問題によく遭遇します。私...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...

Mysqlデータベースの文字化けに対処する方法

MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

ローカル フォルダー内の画像を読み込んで表示するための HTML サンプル コード

一つの目的Html ページでローカル フォルダーを選択すると、フォルダーとそのサブフォルダー内のすべ...