我需要找到一种简单而通用的方法来捕获任何http://www.sub.example.com
URL 并将其重定向到http://sub.example.com
(即删除 www)
我希望为服务器实现一次这个,而不是为每个站点实现这个,也许使用 IIS Rewriter?
答案1
您需要在 IIS URL 重写模块中制定重定向规则,如下所示:
匹配网址
请求的 URL:Matches the Pattern
使用:Regex
模式:*
和Ignore case
状况
逻辑分组:Match Any
输入:{HTTP_HOST}
类型:匹配模式模式:^(www\.)(.*)$
服务器变量 留着空白。
行动
操作类型:Redirect
重定向 URL:https://{C:2}{PATH_INFO}
附加查询字符串:checked
重定向类型:Permanent (301)
应用规则并运行 IISReset。
或者,安装模块后,您可以按如下方式修改 web.config:
<rewrite>
<rules>
<rule name="Strip www" enabled="true" patternSyntax="Regex" stopProcessing="true">
<match url="*" negate="false" />
<conditions logicalGrouping="MatchAny">
<add input=""{HTTP_HOST}" pattern="^(www\.)(.*)$" />
</conditions>
<action type="Redirect" url="https://{C:2}{PATH_INFO}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
此规则旨在检查任何 URL (*),在 {HTTP_HOST} 中查找“www.”(默认情况下不区分大小写)的实例,然后重定向到规范主机名的第二部分 {C:2},并将路径的其余部分附加到末尾 {PATH_INFO}。如果请求的内容类似于它http://bad.www.example.com/some/page.html
会返回的内容https://www.example.com/some/page.html
,则此规则可能会失败,但它应该适用于大多数情况。