URL 書き換えモジュール 2.1 URL 書き換えモジュールのルール記述

URL 書き換えモジュール 2.1 URL 書き換えモジュールのルール記述

前提条件

このチュートリアルには次の前提条件が必要です。

IIS は URL 書き換えモジュール 2.1 をインストールします

短縮 URL http://www.iis.net/extensions/URLRewrite

ダウンロードページ

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

ダウンロードリンク

https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi

https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi

ASP.NET 役割サービスが有効になっている IIS 7 以降。
URL 書き換えモジュールがインストールされています。詳細については、「URL 書き換えモジュールの使用」を参照してください。

テストページの設定

URL 書き換えモジュールがどのように機能するかを示すために、簡単なテスト ASP.NET ページを使用します。このページは、Web サーバーの変数を読み取り、その値をブラウザーに出力します。

次の ASP.NET コードをコピーし、%SystemDrive%\inetpub\wwwroot\ フォルダーの article.aspx という名前のファイルに配置します。

<%@ ページ言語="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<ヘッド>
<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
<title>URL 書き換えモジュール テスト</title>
</head>
<本文>
  <h1>URL 書き換えモジュール テスト ページ</h1>
  <テーブル>
   <tr>
     <th>サーバー変数</th>
     <th>値</th>
   </tr>
   <tr>
     <td>元の URL: </td>
     <td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
   </tr>
   <tr>
     <td>最終 URL: </td>
     <td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
   </tr>
  </テーブル>
</本文>
</html>

このファイルをコピーした後、http://localhost/article.aspx にアクセスし、ブラウザーでページが正しく表示されるかどうかを確認します。

書き換えルールの作成

次の形式を使用して URL を書き換える単純な書き換えルールを作成します。

http://localhost/article/342/記事のタイトル

に:

http://localhost/article.aspx?id=342&title=some-article-title.

IIS マネージャーの URL 書き換え UI を使用して書き換えルールを作成します。これを行うには、次の手順に従います。

1. IIS マネージャーに移動します。

2. デフォルトのWebサイトを選択します。

3. 機能ビューで、「URL 書き換え」をクリックします。

4. 右側の「アクション」ウィンドウで、「規則の追加...」をクリックします。

5. [ルールの追加] ダイアログ ボックスで [空のルール] を選択し、[OK] をクリックします。

ここで、実際の書き換えルールを定義する必要があります。 URL 書き換えモジュールでは、次の 4 つの必須情報を指定して書き換えルールが定義されます。

  • ルール名。
  • URL 文字列と一致するパターン。
  • オプションの条件セット。
  • パターンが一致し、すべての条件チェックが成功した場合に実行されるアクション。

命名規則

[名前] テキスト ボックスに、このルールを一意に識別する名前を入力します (例: 「article.aspx に書き換える」)。

モードの定義

パターン テキスト ボックスに次の文字列を入力します。

^記事/([0-9]+)/([_0-9a-z-]+)

この文字列は、パターンが次の条件を満たすすべての URL 文字列と一致することを指定する正規表現です。

  1. 文字列「article/」で始まります。
  2. 最初の「/」の後に 1 つ以上の数字文字を含めます。
  3. 2 番目の「/」の後に 1 つ以上の英数字、または「_」または「-」文字を含めます。

正規表現の一部が括弧で囲まれていることに注意してください。これらの括弧は、後方参照を使用してルール内で後で参照できるキャプチャ グループを作成します。

アクションの定義

作成するルールは URL を書き換えるものなので、「アクション」グループ ボックスにリストされている「書き換えアクション」タイプを選択します。 「URL の書き換え:」テキスト ボックスに次の文字列を入力します。

記事.aspx?id={R:1}&タイトル={R:2}

この文字列は、入力 URL を書き換える新しい値を指定します。クエリ文字列パラメータの値には、括弧を使用してルールパターンで定義されたキャプチャグループへのバック参照である {R:1} と {R:2} を使用していることに注意してください。

その他の設定はすべてデフォルト値のままにしておきます。受信規則のプロパティの編集ページは次のようになります。

右側の「適用」をクリックしてルールを保存します。

設定ファイル内の書き換えルールを表示する

書き換えルールは、ApplicationHost.config ファイルまたは Web.config ファイルに保存されます。作成したルールの構成を確認するには、%SystemDrive%\inetpub\wwwroot にある Web.config ファイルを開きます。このファイルには、次のルール定義を含む <rewrite> セクションが表示されます。

<書き直し>
 <ルール>
 <rule name="article.aspx に書き換える">
  <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
  <action type="書き換え" url="article.aspx?id={R:1}&amp;title={R:2}" />
 </ルール>
 </ルール>
</書き換え>

上記の構文は、Windows Azure Websites (WAWS) の Web.config で URL 書き換えを構成する場合にも適用されます。

書き換えルールのテスト

ルールが URL を正しく書き換えていることをテストするには、Web ブラウザを開いて次の URL を要求します。

http://localhost/article/234/タイトル

Web サーバーの書き換えルールによって元の URL が Article.aspx に変更され、クエリ文字列パラメータの値として「234」と「some-title」が渡されたことがわかります。

リダイレクトルールを作成する

ここで、すべての URL を次の形式でリダイレクトするリダイレクト ルールを作成します。

http://localhost/blog/some-other-title/543
形式は次のとおりです。
http://localhost/article/543/その他のタイトル

リダイレクト ルールを使用すると、複数の URL を 1 つの Web ページに指定できます。

これを行うには、IIS マネージャーで URL 書き換え機能ビュー UI を開きます。 [ルールの追加...] をクリックし、空のルール テンプレートを再度選択します。

「ルールの編集」ページで、以下を入力します。

  • 名前: ブログからリダイレクト (これはルールの一意の名前です。)
  • パターン: ^blog/([[_0-9a-z-]+)/([0-9]+) (このパターンは、「blog」で始まる URL 文字列と一致し、URL の 2 番目と 3 番目の部分をバック参照としてキャプチャします。)
  • アクション: リダイレクト (リダイレクト アクションにより、リダイレクト応答がブラウザーに返されます。)
  • リダイレクト URL: article/{R:2}/{R:1} (この置換文字列はリダイレクト URL として使用されます。パターン マッチング中にキャプチャされた元の URL を保持および再配置するためにバック参照が使用されることに注意してください。)

以下に示すように、名前、スタイル、アクションを入力します。

以下のようにリダイレクト URL を入力します。

その他の設定はすべてデフォルト値のままにしておきます。右側の「適用」をクリックしてルールを保存します。

リダイレクトルールのテスト

ルールがリクエストを正しくリダイレ​​クトしていることをテストするには、Web ブラウザを開いて次の URL を要求します。

http://localhost/blog/some-other-title/323

リダイレクト ルールの実行により、ブラウザーが http://localhost/article/323/some-other-title にリダイレクトされ、その後、先ほど作成した書き換えルールに従ってリクエストが書き換えられることがわかります。

アクセスブロックルールの作成

3 番目に作成するルールは、ホスト ヘッダーが設定されていない場合、Web サイトへのすべてのリクエストをブロックします。このタイプのルールは、ホスト名を使用する代わりにサーバーの IP アドレスに対して HTTP 要求を行うことによって行われるハッキングの試みを防ぐ場合に役立ちます。

このルールは、IIS マネージャーを使用せずに作成します。この記事の冒頭の article.aspx テスト ファイルに使用した %SystemDrive%\inetpub\wwwroot\ フォルダー内の Web.config ファイルを開きます。 <rewrite> セクションを見つけます。次のルールを <rules> コレクションに挿入し、コレクションの最初のルールにします。

<rule name="不正なリクエストを失敗させる">
 <マッチURL=".*"/>
 <条件>
 <入力を追加="{HTTP_HOST}" パターン="localhost" 否定="true" />
 </条件>
 <アクション タイプ="中止要求" />
</ルール>

<rewrite> セクションは次のコードのようになります。

<書き直し>
 <ルール>
 <rule name="不正なリクエストを失敗させる">
  <マッチURL=".*"/>
  <条件>
  <入力を追加="{HTTP_HOST}" パターン="localhost" 否定="true" />
  </条件>
  <アクション タイプ="中止要求" />
 </ルール>
 <rule name="ブログからリダイレクト">
  <match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
  <action type="Redirect" url="article/{R:2}/{R:1}" redirectType="見つかりました" />
 </ルール>
 <rule name="article.aspx に書き換える">
  <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
  <action type="書き換え" url="article.aspx?id={R:1}&amp;title={R:2}" />
 </ルール>
 </ルール>
</書き換え>

ルールを分析して、それが何をするのか理解してみましょう。

<マッチURL=".*"/>

上記の要素は、このルールが任意の URL 文字列に一致することを示します。

<入力を追加="{HTTP_HOST}" パターン="localhost" 否定="true" />

上記の要素は、サーバー変数 HTTP_HOST を読み取り、それをパターン「localhost」と照合し、結果を否定することで、Host ヘッダー値を取得する条件をルールに追加します。つまり、条件はホスト ヘッダーが「localhost」と一致しないことを検証します。

<アクション タイプ="中止要求" />

上記の要素は、URL 書き換えモジュールに HTTP リクエストを終了するように指示します。

アクセスブロックルールのテスト

このルールをテストするには、Web ブラウザーを開いて、http://127.0.0.1/article/234/some-title にリクエストを送信します。ブラウザがサーバーから応答を受信して​​いないことがわかります。ただし、http://localhost/article/234/some-title をリクエストすると、Web サーバーは正常に応答します。

失敗した表示は次のとおりです。

成功は次のように表示されます。

まとめ

このチュートリアルでは、IIS マネージャーを使用するか、Web.config ファイルを手動で編集して URL 書き換えルールを構成する方法を学習しました。このチュートリアルで作成されるルールは、正規表現のサポートや、HTTP ヘッダーとサーバー変数を使用して書き換えを決定する機能など、URL 書き換えモジュールのいくつかの重要な機能を示しています。

<<:  Vue はトークンの有効期限が切れると自動的にログインページにジャンプする機能を実装します

>>:  HTMLテーブルタグの詳しい解説(初心者向け)

推薦する

Tomcat プロセスの CPU 使用率が高い場合のトラブルシューティング記録を記録する

この記事では主にTomcatプロセスを記録し、TCP接続が多すぎることによるCPU使用率の過剰のトラ...

vueはel-tableの列幅の適応を完璧に実現します

目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...

Linux環境でのActiveMQ導入方法の詳しい説明

この記事では、Linux 環境での ActiveMQ の展開方法について説明します。ご参考までに、詳...

3分でUbuntu 16.04を初期化し、Java、Maven、Docker環境をデプロイする

Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

Linux C ログ出力コード テンプレート サンプル コード

序文この記事は主に Linux C でのログ出力コード テンプレートに関する関連コンテンツを紹介し、...

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られていると...

Vueはファイルのアップロードとダウンロード機能を実装します

この記事では、ファイルのアップロードとダウンロード機能を実装するためのVueの具体的なコードを例とし...

MySQL 完全折りたたみクエリ正規マッチングの詳細な説明

概要前の章では、クエリのフィルター条件について学習しました。MySQL では、like % ワイルド...

ECMAScript のイテレータの詳細な説明

目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...

Vueのログインとログアウトの詳細な説明

目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...

Dockerコンテナ内の設定ファイルの変更の実装

1. コンテナに入るdocker run [オプション] イメージ名 [起動コンテナに渡されるコマン...

nginx を使用して wgcloud へのアクセスを構成する方法

nginx の設定は次のとおりです。 http://172.17.188.27/wgcloud など...