IIS10下使用url重写模块(rewrite)完成:http 跳转 https 、不带www 跳转到 www,并排除指定域名,以及“若要安装iis URL重新模块2,需要iis7.2版或更高版本”问题的解决

时间:2024-03-07 14:59:11

主要解决 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>