我们有一个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?
答案 0 :(得分:0)
如果您在规则中包含“ 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>