Уточнение перезаписи URL-адреса IIS {R: N}
Я не смог понять назначение {R: N}. Может ли кто-нибудь уточнить, когда использовать{R:0}
и {R:1}
пример использования:
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />
Я видел ScottGu с помощью {R: 1}
принимая во внимание, что ниже На {r:0}
http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx
посмотрел на ссылку IIS ниже, но не мог спокойно переварить определение ниже:
Back-ссылки на шаблоны условий идентифицируются {C:N}, где N-от 0 до 9; back-ссылки на шаблон правила идентифицируются {R: N}, где N-от 0 до 9. Обратите внимание, что для обоих типов обратных ссылок {R: 0} и {C:0} будут содержать соответствующую строку
1 ответов
согласно документации:
когда используется синтаксис шаблона 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
ссылка на второй и т. д...до номера ссылки9
Примечание:
когда используется синтаксис шаблона" подстановочный знак", обратные ссылки всегда создается, когда в шаблоне используется символ звездочки ( * ). Нет обратные ссылки создаются, когда "?"используется в шаблоне.