IIS URL 重写 - 具有多个域
IIS URL Rewrite - with multiple domains
我有一个 website/application 相同的页面 运行 许多网站(取决于 URL 页面显示不同 logo/css/content 等)。我试图强制每个网站域重定向到 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 重写中使用默认的 'Canonical domain name' 规则,您必须选择一个要转发到的域,所以如果我选择 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
在测试新网站添加到现有网站时,我们将它们设置在子域上,因此我也要求子域继续不被重定向。
但问题在于在同一个 website/web.config 文件中执行此操作。
尝试以下操作(归功于 的@Atashbahar):
<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>
我有一个 website/application 相同的页面 运行 许多网站(取决于 URL 页面显示不同 logo/css/content 等)。我试图强制每个网站域重定向到 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 重写中使用默认的 'Canonical domain name' 规则,您必须选择一个要转发到的域,所以如果我选择 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
在测试新网站添加到现有网站时,我们将它们设置在子域上,因此我也要求子域继续不被重定向。
但问题在于在同一个 website/web.config 文件中执行此操作。
尝试以下操作(归功于 的@Atashbahar):
<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>