У нас есть многодоменный веб-сайт; многие «веб-сайты» в одном и том же веб-приложении. И мы хотим переписать URL-адрес на стиль «www. *». Подмигнул просто, когда вы делаете этот сайт для каждого сайта:Url rewrite не работает должным образом
<rewrite>
<rules>
<rule name="Canonical host name">
<match url="^(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mydomainTest\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.mydomainTest.com/{R:1}" />
</rule>
</rules>
</rewrite>
Но у нас есть некоторые проблемы, когда пытаются «каноническое» регулярное выражение для любого имени хоста:
<rewrite>
<rules>
<rule name="Canonical host name">
<match url="^(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([www.]{0,4})([A-Za-z0-9]*)(.com)([.ar]{0,3})$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.{R:2}.com{R:4}" />
</rule>
</rules>
</rewrite>
Мы делаем тесты в regex101.com и мы регулярное выражение сделать это:
тест регулярное выражение = ^([www.]{0,4})([A-Za-z0-9]*)(.com)([.ar]{0,3})$
1) домен = "www.mydomainTest.com.ar" результат =
{R:1} = www.
{R:2} = mydomainTest
{R:3} = .com
{R:4} = .ar
2) домена тест = mydomainTest.com.ar результат =
{R:1} =
{R:2} = mydomainTest
{R:3} = .com
{R:4} = .ar
Тот же результат с "URL Rewrite 2.0" в iis 7.
Мы можем быть уверены, что регулярное выражение работает нормально, но наш веб-ресурс DON'T переписывается так, как ожидалось. Если вы получаете доступ к «www.domain.com.ar» или «domain.com.ar», то ничего не происходит. Но если вы используете первую конфигурацию перезаписи, все работает нормально. Надеюсь, я ясно объяснил проблему.
Ну, что мы забываем? что мы сделали неправильно?
Большое спасибо!
Второе правило не будет работать, потому что { R: 2} и {R: 4} равны нулю. Шаблон, который он пытается совместить, это^(. *), Который даст вам только {R: 0} и {R: 1}. – TejSoft
Если я не использую « , Он должен работать? –
Rodrigo