У нас есть CMS, где мы размещаем несколько сайтов в разных поддоменах, но с одним и тем же основным доменом:
Пример:
sub1.mysite.com
sub2.mysite.com
Это одно и то же приложение, и они используют один и тот же файл web.config. Поэтому, когда я пытаюсь написать правило перезаписи и похожее совпадение существует на другом сайте поддомена, перезапись влияет на все сайты.
Я хочу сопоставить домен базового уровня (mysite.com или sub.mysite.com) и создать свои правила перезаписи?
Все ответы, которые я нахожу, говорят о том, чтобы использовать что-то вроде
<match url = "^(.*)$" ignoreCase = "true" />
or <match url = "^mypage/?(.*)$" />
or <match url = "^mypage/mysubpage//?(.*)$" />
Но проблема с просмотром любого из них заключается в том, что знак "^" является своего рода подстановкой, а не специфичным для домена / субдомена.
Допустим, я хочу иметь правило перезаписи для
mysite.com/about-us
а сайт субдомена имеет страницу с таким же названием
sub1.mysite.com/about-us
НО я хочу ТОЛЬКО переписать основной mysite.com/about-us и НЕ иметь того же правила перезаписи на сайте sub1.mysite.com/about-us.
Как мне сказать, что я хочу, чтобы mysite.com/about-us был переписан на mysite.com/about/about-us?





Если вы включите «HTTP_HOST» в свое правило, вы можете ограничить его своим основным URL-адресом.
например. в приведенном ниже примере у меня есть основной домен, настроенный как Replicant.test, и перенаправление НЕ будет работать в субдомене, таком как site1.replicant.test.
<rule name = "Main site redirect" stopProcessing = "true">
<match url = "^article/([0-9]+)/([_0-9a-z-]+)" />
<action type = "Rewrite" url = "article.aspx?id = {R:1}&title = {R:2}" />
<conditions>
<add input = "{HTTP_HOST}" pattern = "^replicant\.test$" />
</conditions>
</rule>
Основное правило перенаправления было взято из https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module.