【问题标题】:.Net web.config match base URL.Net web.config 匹配基本 URL
【发布时间】:2019-01-16 20:26:20
【问题描述】:

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

【问题讨论】:

    标签: .net iis web-config


    【解决方案1】:

    如果您在规则中包含“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-05
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多