【问题标题】:IIS URL Rewrite - with multiple domainsIIS URL 重写 - 具有多个域
【发布时间】:2016-04-25 05:02:22
【问题描述】:

我有一个网站/应用程序,其中相同的页面运行许多网站(取决于 URL,页面显示不同的徽标/css/内容等)。我试图强制每个网站域重定向到 www。域的版本。

我在 URL 重写中使用默认的规范规则开始,然后只是将匹配 URL 模式更改为:

(.*)

收件人:

(^domain*)

所以它只会对非 www 执行此操作。当前域的版本,并不匹配所有域。

我的计划是为每个使用系统将每个域重定向到 www 的域创建一个。版本。

当我在 IIS 中测试模式时,规则匹配(我认为)它应该这样做。但是当我访问该网站时,它不会重定向,它只是停留在非 www 上。版本。

有谁知道我哪里出错了,或者这是否可能?

谢谢 J.

更新 我想我会尝试给出更好的解释:

我在 IIS 中设置了一个网站。本网站的页面运行多个相同类型的网站,每个网站的风格、标志和产品都因URL而异。

假设我在网站上设置了以下绑定:

www.domain1.com, domain1.com, www.domain2.com, domain2.com, www.domain3.com, domain3.com

该网站将提供一个外观不同的网站,根据 URL 提供不同的内容、样式等。

如果我在 URL 重写中使用默认的“规范域名”规则,您必须选择一个要转发到的域,所以如果我选择 www.domain1.com 它会添加规则:

<rewrite>
    <rules>
        <rule name="CanonicalHostNameRule1">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^www\.domain1\.com$" negate="true" />
            </conditions>
            <action type="Redirect" url="http://www.domain1.com/{R:1}" />
        </rule>
      </rules>
</rewrite>

然后这会将所有内容转发到 www.domain1.com。因此,如果用户访问 domain2.com 或 www.domain2.com,他们将被重定向到 www.domain1.com。

我需要它以便人们被重定向如下:

domain1.com > www.domain1.com

domain2.com > www.domain2.com

domain3.com > www.domain3.com

在测试新网站以添加到现有网站时,我们将它们设置在子域上,因此我还要求子域继续不被重定向。

但问题在于在同一个网站/web.config 文件中执行此操作。

【问题讨论】:

    标签: asp.net redirect iis url-rewriting iis-8


    【解决方案1】:

    尝试以下操作(@Atashbahar https://stackoverflow.com/a/31955179/2664650):

    <rewrite>
        <rules>
              <rule name="Add WWW" stopProcessing="true">
              <match url="^(.*)$" />
              <conditions>
                 <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" />
              </conditions>
              <action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" />
           </rule>
        </rules>
    </rewrite>
    

    【讨论】:

    • 嗨,clorkster,感谢您的回答,我认为这可以正常工作,尽管我没有提到的一件事是设置我们在子域上拥有它们的网站,这也增加了 www .在那之前,你知道有什么方法可以阻止它吗?
    • 当然。它们是否都有一个共同的顶级域名,或者至少是其中的一小部分?而且格式总是 subdomain.domain.tld?
    • 我已经通过添加条件“不匹配模式”并将模式作为子域来解决这个问题,我必须为每个子域添加一个,这很好,因为它只是在网站得到设置。谢谢。
    • 如何从规则中排除子域?
    • 我不是正则表达式专家,因此可能有更优雅的解决方案,但您可以添加一个条件:
    猜你喜欢
    • 2020-10-24
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多