我正在尝试删除www。从一个站点,所以我在我的基页上写了一个小代码。
if (Request.Url.ToString().IndexOf("www.example.com") > -1)
{
Response.RedirectPermanent(Request.Url.ToString().Replace("www.example.com", "example.com"), true);
}
else
{
base.OnLoad(e);
}
这样可行,但在SSL页面上,浏览器会出现证书错误,因为我的证书已签署到 example.com
所以我认为我需要在IIS 8.5中使用 URL重写模块并尝试过这个。
<rewrite>
<rules>
<rule name="remove www." stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="(www\.)(.*)$" />
</conditions>
<action type="Redirect" url="{C:2}" appendQueryString="false" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
此操作失败,因为它会将www.example.com重定向到www.example.com/example.com
请帮我写一个正确重定向的重写器。谢谢。
修改
我成功重定向了http页面,但仍然无法通过https重定向获取 ERR_CONNECTION_RESET 。我写了两条规则
<rule name="remove www. (https)" stopProcessing="true">
<match url="^(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^ON" />
<add input="{HTTP_HOST}" pattern="^www\.example\.com" />
</conditions>
<action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="remove www. (http)" stopProcessing="true">
<match url="^(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.example\.com" />
</conditions>
<action type="Redirect" url="http://example.com/{R:1}" redirectType="Permanent" />
</rule>
我完全迷失在这里。为什么不首先统治工作,但第二个工作呢?
第二次修改:
实际上,http和https的规则正常。 ERR_CONNECTION_RESET
因为https绑定丢失而发生。但我仍然得到证书错误。
我接缝,浏览器不检查重定向并停止执行页面包含证书错误。
答案 0 :(得分:1)
将www转换为非www
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www[.](.+)" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
将非www转换为www *确保更新域后缀
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z]+[.]com)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}/{R:0}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>