IIS 8 URL 重写模块,用于将非 WWW 重定向到 WWW(具有子域的 URLs 除外)
IIS 8 URL Rewrite Module for redirecting Non-WWW to WWW (except URLs with sub-domains)
我正在将我所有网站的非 www 版本的域重定向到 www 版本。
但是,副作用是它还会使用 www
重定向子域
例如api.example.com 到 www.api.example.com
这不是我想要的。我需要所有带有子域的站点都不要在 www.
前面加上
这是我目前的规则:
<system.webServer>
<rewrite>
<globalRules>
<clear />
<rule name="non-www to www" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
</conditions>
<action type="Redirect" url="{C:1}://www.{C:2}" />
</rule>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" /> <!-- Require SSL must be OFF in the site settings -->
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
如果输入不是以 'www' 开头且不是子域,是否可以制定仅重定向到 www.example.com 的规则?
任何有子域的东西都不能在 www
前面
请帮忙,因为我已经尝试了两天但没有成功。
提前致谢!!
您需要将正则表达式更改为:^[^.]*\.[^.]{2,3}(?:\.[^.]{2,3})?$
,此正则表达式将仅捕获 second-level 个域。
我从这个答案中得到它:
最后你的规则将是这样的:
<rule name="non-www to www and https" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^[^.]*\.[^.]{2,3}(?:\.[^.]{2,3})?$" />
</conditions>
<action type="Redirect" url="https://www.{HTTP_HOST}" />
</rule>
我正在将我所有网站的非 www 版本的域重定向到 www 版本。
但是,副作用是它还会使用 www
重定向子域例如api.example.com 到 www.api.example.com
这不是我想要的。我需要所有带有子域的站点都不要在 www.
前面加上这是我目前的规则:
<system.webServer>
<rewrite>
<globalRules>
<clear />
<rule name="non-www to www" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(.+)://(?!www)(.*)" />
</conditions>
<action type="Redirect" url="{C:1}://www.{C:2}" />
</rule>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" /> <!-- Require SSL must be OFF in the site settings -->
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
如果输入不是以 'www' 开头且不是子域,是否可以制定仅重定向到 www.example.com 的规则?
任何有子域的东西都不能在 www
前面请帮忙,因为我已经尝试了两天但没有成功。
提前致谢!!
您需要将正则表达式更改为:^[^.]*\.[^.]{2,3}(?:\.[^.]{2,3})?$
,此正则表达式将仅捕获 second-level 个域。
我从这个答案中得到它:
最后你的规则将是这样的:
<rule name="non-www to www and https" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^[^.]*\.[^.]{2,3}(?:\.[^.]{2,3})?$" />
</conditions>
<action type="Redirect" url="https://www.{HTTP_HOST}" />
</rule>