IIS 8.5:如何将http://www.重定向至https://www.并返回301而非302状态码?
在IIS 8.5实现HTTP www到HTTPS www的301永久重定向
刚好之前在IIS 8.5上折腾过一模一样的需求,给你分享两种靠谱的实现方式,都能确保返回301永久重定向,不会出现302的情况:
方法一:通过IIS图形界面配置URL重写模块
这是最直观的方式,适合习惯可视化操作的同学:
- 首先确保你的IIS已经安装了URL重写模块——如果没有的话,打开服务器管理器,在「添加角色和功能」里找到Web服务器(IIS)下的「应用开发」,勾选URL重写安装即可。
- 打开IIS管理器,找到你要配置的网站,双击右侧功能视图里的「URL重写」。
- 在URL重写界面的右侧操作栏,点击「添加规则」,选择「空白规则」,给规则起个好记的名字,比如「HTTP to HTTPS (www) 301 Redirect」。
- 配置「匹配URL」部分:
- 请求路径选择「与模式匹配」
- 模式填写
(.*),勾选「忽略大小写」
- 配置「条件」部分,点击「添加」按钮,添加两个条件:
- 第一个条件:输入
{HTTPS},匹配类型选「与模式匹配」,模式填^OFF$(意思是只匹配HTTP请求) - 第二个条件:输入
{HTTP_HOST},匹配类型选「与模式匹配」,模式填^www\.(.*)$(确保只针对www开头的域名)
- 第一个条件:输入
- 配置「操作」部分:
- 操作类型选择「重定向」
- 重定向URL填写
https://www.{C:1}/{R:1}({C:1}对应第二个条件里匹配到的域名部分,{R:1}对应请求的路径) - 重定向类型选择「永久(301)」
- 勾选「追加查询字符串」和「停止处理后续规则」
- 点击界面右侧的「应用」,保存配置就搞定了。
方法二:直接修改web.config文件(适合喜欢代码配置的同学)
如果习惯直接改配置文件,或者需要批量部署的话,直接编辑网站根目录下的web.config文件,添加以下规则即可:
<configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS www 301 Redirect" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <!-- 匹配HTTP请求 --> <add input="{HTTPS}" pattern="^OFF$" /> <!-- 匹配www开头的域名 --> <add input="{HTTP_HOST}" pattern="^www\.(.*)$" /> </conditions> <!-- 重定向到HTTPS的www地址,返回301 --> <action type="Redirect" url="https://www.{C:1}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
几个重要的注意事项
- 一定要确保你的网站已经绑定了有效的HTTPS证书,不然重定向后浏览器会提示安全错误。
- 如果你的网站有多个域名需要处理,可以复制规则修改
HTTP_HOST的匹配模式,或者添加新的规则。 - 配置完成后,记得测试:用浏览器访问
http://www.yourdomain.com,打开开发者工具(F12)查看网络请求的状态码,确认返回的是301。
内容的提问来源于stack exchange,提问作者saxon88
相关产品推荐
相关产品推荐

