1. ホーム
  2. iis-7

[解決済み] IIS URL Rewrite {R:N}の明確化

2023-03-07 04:47:24

質問

R:N}の目的がよくわかりません。どなたか、どのような場合に

{R:0} vs. {R:1}

の使用例です。

<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />

ScottGuが{R:1}を使用しているのを見たことがあります。

http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx

一方、下は{R:0}です。

http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

以下の IIS のリンクを見てみましたが、以下の定義をよく理解できませんでした。

条件パターンへの後方参照は {C:N} で識別され、N は 0 から 9 である; ルールパターンへの後方参照は {R:N} で識別され、N は 0 から 9 である。どちらのタイプの後方参照でも、{R:0} と {C:0} には一致した文字列が含まれることに注意してください。

どのように解決するのですか?

ドキュメントにある通りです。

ECMAScript のパターン構文が使用されている場合、後方参照を作成することができます。 後方参照を捕捉する必要がある部分を括弧で囲むことで、後方参照を作成することができます。 で囲むことにより、後方参照を作成することができます。

つまり、ドキュメントにある次のような例をとると。

^(www\.)(.*)$

また、入力文字列を使用して www.foo.com の中に 条件 をつけると、そうなります。

{C:0} - www.foo.com
{C:1} - www.
{C:2} - foo.com

シンプルにするために

  • {R:x} はルールパターンからの後方参照として使われます ( <match url="..."> ).
  • {C:x} は、条件パターンからの後方参照として使われます ( <conditions><add input="{HTTP_HOST}" pattern="..."></conditions> )
  • 0 参照には入力文字列全体が含まれます。
  • 1 の参照は、最初の括弧内のパターンにマッチする文字列の最初の部分を含みます。 () を含む。 2 は2番目のものを参照する、など...参照番号まで 9

注意

Wildcard"パターン構文が使用される場合、後方参照は常にパターン内でアスタリスク記号(*)が使用されたときに作成され、quot? アスタリスク記号 (*) がパターン内で使用されている場合、後方参照が常に作成されます。いいえ がパターン内で使用された場合、後方参照は作成されません。

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Using_back-references_in_rewrite_rules