主要解决 http跳转问题,然后顺道解决下 不带www的域名跳转到www的域名下。
例如 http://PrintY.com 跳转到 https://www.PrintY.com, https://PrintY.com 跳转到 https://www.PrintY.com
当然还有一个问题,就是IIS绑定了多域名,指定域名不想让跳转,例如还绑定了 admin.PrintY.com ,那么这个域名就不想让它自动跳转。
我这里用的是rewrite完成URL的重新来实现的,服务器: Windows server 2019 、IIS10
1、下载rewrite_x64_zh-CN.msi
我用的是 rewrite 2,是以前下载的,就凑合用了,如果安装过程中提示:解决“若要安装iis URL重新模块2,需要iis7.2版或更高版本。”这个问题,解决方法如下:
1、【Win+R】大凯运行框,然后输入【regedit】确定打开注册表;
2、找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp (也可以复制到路径上)
3、选中以后,找到名称为“MajorVersion”的节点(如果有两个则选中第一个)
4、右键“修改”
将“a”改成“9”
5、重新安装rewrite,这个时候应该可以了,安装完毕以后,记得把值该回来。
2、配置url重写规则
右键“打开”->选择最后边“操作“下的的“添加规则”->“空白规则”,然后“确定”
模式:(.*) ,然后展开“条件”
条件输入:{HTTPS} 模式:^OFF$ ,然后继续往下滑动,继续填写
重定向URL:https://{HTTP_HOST}/{R:1} 重定向类型:已找到(302) 或 参阅其它(303)
然后点击“应用”就行了,这块我说下,现在这么配置有个问题,例如:http://PrintY.com 会自动跳转到 https://PrintY.com,所以这块要改成:https://www.PrintY.com/{R:1} ,改成这样,无论是否带www都会跳转到wwww.上面!
接下来还有一个问题,那就是排除其它不想跳转的域名,这个到“添加条件”那一步,再额外添加一个条件:
条件输入:{HTTP_HOST} 模式:^要排除的域名$ 例如:admin.PrintY.com
注意下:这块 “检查输入字符串是否:” 选择 “与模式不匹配” !
---------------------------------- 这里提供另外一种方式实现:不带www跳转到带www的域名 ----------------------------------
访问:https://htaccess.iapolo.com/#a_WWW ,生成需要的代码,然后在URL重写模块中导入这个规则即可。
这里是web.config生成的代码,实在不想操作,复制下也行。
1 <rewrite> 2 <rules> 3 <clear /> 4 <rule name="http to https" stopProcessing="true"> 5 <match url="(.*)" /> 6 <conditions> 7 <add input="{HTTPS}" pattern="^OFF$" /> 8 <add input="{HTTP_HOST}" pattern="^admin.printy.net$" negate="true" /> 9 </conditions> 10 <action type="Redirect" url="https://www.printy.net/{R:1}" redirectType="Found" /> 11 </rule> 12 <rule name="已导入的规则 1" stopProcessing="true"> 13 <match url="^(.*)" ignoreCase="false" /> 14 <conditions logicalGrouping="MatchAll"> 15 <add input="{HTTP_HOST}" pattern="^(printy\.net)(:80)?" /> 16 </conditions> 17 <action type="Redirect" url="https://www.printy.net/{R:1}" redirectType="Permanent" /> 18 </rule> 19 </rules> 20 </rewrite>