Я разделил некоторые страницы между поддоменами и хочу в некоторых случаях переписать 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, если я поместил _
в начало пути.
Какие-либо предложения?