.net web.config匹配基本URL

时间:2019-01-16 20:26:21

标签: .net iis web-config

我们有一个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?

1 个答案:

答案 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}&amp;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