web-dev-qa-db-ja.com

IIS URL Rewrite {R:N}の説明

{R:N}の目的を理解できませんでした。誰がいつ使用するかを明確にしてください
{R:0} vs. {R:1}

使用例:

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

{R:1}を使用してScottGuを見てきました

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}には、一致した文字列が含まれます。

61
Nil Pun

ドキュメントに従って:

ECMAScriptパターン構文を使用する場合、逆参照をキャプチャする必要があるパターンの部分を括弧で囲むことにより、逆参照を作成できます。

そのため、ドキュメントにある次の例を取り上げます。

^(www\.)(.*)$

conditionsで入力文字列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

注意:

「ワイルドカード」パターン構文を使用する場合、パターンでアスタリスク記号(*)を使用すると、常に後方参照が作成されます。 「?」の場合、後方参照は作成されません。パターンで使用されます。

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

77
cheesemacfly