Я разделил несколько страниц между поддоменами и в некоторых случаях хочу переписать URL на разные страницы в разных поддоменах. Все является правилом перезаписи, за исключением двух последних правил в файле. Эти два последних правила определяют, к какому поддомену будет направляться путь, к которому я исправил.
Я делаю это так: если я добавляю путь к подчеркиванию (_), то он остается на поддомене A. Если я добавляю путь к тильде (~), он перенаправляется на поддомен B.
Итак, у меня есть это правило:
<rule name="Login rule" stopProcessing="false">
<match url="(.*?)/?old-path/Login\.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_METHOD}" pattern="GET" />
</conditions>
<action type="Rewrite" url="~new-path/login.aspx" />
</rule>
Обратите внимание, что в конце URL-адреса есть aspx. Он продолжает обработку, но у меня есть общее правило перезаписи в конце списка прямо перед перенаправлением. Это сделано для удаления всех расширений ASPX на поддомене A (www), но я хочу оставить расширение ASPX для поддомена B (не предлагайте удалять предложенное на втором поддомене. Спасибо:)
<rule name="Remove ASPX" stopProcessing="false">
<match url="^([^www\.]+)\.aspx$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="_{R:1}" />
</rule>
Проблема в том, что это не сработает, потому что все URL в начале имеют www. Я не очень хорош в регулярных выражениях, но я предполагаю, что мне нужно просто применить это правило ко всем URL, в которых есть тильда. Я пробовал это, но это тоже не работает:
<match url="^_+\.aspx$" />
По сути, я хочу, чтобы это правило игнорировало URL-адреса, которые я переписал, чтобы иметь ~
, но удалял ASPX, если я поместил _
в начале пути.
Есть предложения?