Роз’яснення щодо переписування URL-адреси IIS {R: N}


81

Я не зміг зрозуміти мету {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}, буде міститися відповідний рядок

Відповіді:


96

Відповідно до документації:

Коли використовується синтаксис шаблону 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

Примітка:

Коли використовується синтаксис шаблону "Wildcard", зворотні посилання завжди створюються, коли в шаблоні використовується символ зірочки (*). Жодні зворотні посилання не створюються, коли "?" використовується в шаблоні.

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


9
Якщо комусь це допомагає, це також пов’язане і дуже корисне посилання: nicolas.guelpa.me/blog/2015/02/21/rewrite-redirect-iis.html
niki b

1
@niki b: Ваш блог мені дуже допоміг через те, що ви прямо говорите " Важливо: правило застосовується лише до шляху; не дозволяйте імені URL-адреси вас обдурити. (наприклад, у example.com/test , схема та доменне ім'я ігноруються для відповідності “url”) , і “ Завжди пам’ятайте, коли ви налагоджуєте переспрямування (зокрема, 301), що браузери, як правило, кешують їх, і що це може призвести до розладу при зміні правила, але нічого трапляється ... ". Будь ласка, виправте приклад доменного імені, використовуючи {R: X}, оскільки це заплутано, ми не маємо до нього доступу з Правилами.
Даніель Лобо

@DanielLobo Я рада, що блог тобі допоміг. Я його не писав, тому, якщо ви хочете, ви можете зв'язатися безпосередньо з блогером. Але добре, що ви вказали це тут, щоб люди про це усвідомлювали.
niki b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.