多域名的同一个网站,需要部署https,教你如何只用一个SSL证书即可完成部署,且不提示不安全的连接信息。URL重写(重定向插件IIS Write)的使用与规则设置方法

郑鹏飞4年前爱T777

比如我的网站,我同时申请了两个域名vxmat.cn和vxmat.com,我需要实现

1、两个域名都访问同一个网站;

2、同时支持带www和不带www的访问;

3、必须部署https,当用户以http方式访问时,必须强制重定向到https的域名;

4、一个相同的IP和端口,在IIS中只能部署一个SSL证书,其它的tomcat之类的没部署过,所以不知道是否支持相同的IP和端口可以部署多个SSL证书,如果支持,可以不需要看这篇文章。所以,我只部署了一个vxmat.cn的证书。如果域名与证书不匹配时,用户浏览器一般都会提示image.png

image.png

这样的信息。

那么,有没有办法可以做到不会被提示这样的不安全呢?这也正是这篇文章的目的。如果这篇文章能帮助到您,请您点个赞!谢谢。

我最终做到了以下的访问规则:以下都是在IIS下实现的。

1、当用户以http方式访问时,会被重定向至 https://vxmat.cn/...........

为什么要管理 http 访问?因为大部分的用户,应该是基本上所有的吧,在浏览器上输入网址是,都是直接输入 www...或者是 toutiao.com,一般不会输入http或者是https的,而浏览器默认都会先以 http:// 方式进行访问(可能以后的浏览器会改成默认为https吧),此时,咱们就需要把http的访问强制重向到https上。


2、当用户以https://方式访问  https://vxmat.com   和 https://www.vxmat.com 时,会被分别重定向到  https://vxmat.cn 和 https://www.vxmat.com 。

下面就是在IIS中设置的方法。

在IIS中,有一个插件叫 IIS rewrite的功能插件,这个插件可以在IIS管理控制台上增加一个URL重写的功能。这个功能非常的实用,可以实现很多功能,比如动态功能网站的伪静态也是靠它来实现的。至于什么叫伪静态以及如何实现,需要另起一篇文章才能说的清楚了。

image.png


本站要实现的方法,就是靠它来建立重写或重定向规则后实现的。

安装好URL重写(IIS Rewrite)插件后,有两种方式建立这个规则,先说说以更改web.config来建立的规则

1、先建立一条规则:当用户以不带s的http进行访问时,强制重定向到 https://vxmat.cn 

这条规则基本上都是从网上抄的,抄的时候自己完全弄不清规则的内容是什么意思,但它实现的就是:当访问不是以https开头的时候,就会重定向到 https://vxmat.cn 

<rule name="HTTP to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" />
	<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
		<add input="{HTTPS}" pattern="off" />
	</conditions>
	<action type="Redirect" url="https://vxmat.cn/{R:1}" redirectType="Found" />
</rule>

在web.config节点

<configuration>

    <system.webServer>

    <rewrite>

      <rules>

下增加上面的代码即可实现。

2、建立第二条规则:当用户以https://方式访问  https://vxmat.com   和 https://www.vxmat.com 时,会被分别重定向到  https://vxmat.cn 和 https://www.vxmat.com :

<rule name="vxmat.com->vxmat.cn" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" />
	<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
		<add input="{HTTP_HOST}" pattern="(.*)vxmat.com" />
	</conditions>
	<action type="Redirect" url="https://{C:1}vxmat.cn/{R:1}" />
</rule>

同样的,也是在rules节点下增加上面的代码即可实现。

在网上基本上搜不到 

<match url="(.*)" />
<add input="{HTTP_HOST}" pattern="(.*)vxmat.com" />

这个两个节点的意思,给我建立第二条规则时造成了非常多的麻烦,可能很多人在建立规则时,也是被它给弄懵的吧。

<match url="(.*)" />

的意思,根据我配置完成第二条规则后,才知道它的意思,其实是 URL 中的域名之后的第一个/之后的路径信息的匹配。

比如访问的是 http://blog.forbs.cn/9.html ,那么它这个url匹配的只是9.html这一段字符路径信息,而并不是完整的地址。

所以,在我建立的这两个规则中,这里match url="(.*)",即所有的访问都需要匹配。

那么,第1条规则就容易理解了,即所有访问中,如果 <add input="{HTTPS}" ...中的 HTTPS这个信息匹配为off,就表示被第1条规则的条件命中,就会强制重定向到 https://vxmat.cn 上。

第2条同理,就是当匹配了第一个url的规则信息后,如果 域名部分,是 *.vxmat.com的格式或vxmat.com时,就会强制重定向到 相应的 vxmat.cn的域名格式上。

以上,就实现了只有一个SSL证书,也能实现当用户以 https://vxmat.com  访问时,也不会收到浏览器的不安全的提示。


以这种方式实现的域名重定向或重写,好处是不需要在程序代码中实现,从而减少了很多代码上的工作量,以及减少了很多出错的可能。


文章写成后,觉得不太甘心,然后又各种搜了一下,结果发现我确实是弄错了。原来IIS上也是可以支持多域名同一个端口绑定不同的SSL证书的,只是勾选上“需要服务器名称指示”的选项即可。

image.png

我是郑鹏飞。 如果您觉得我的文章对您有帮助,可以点击站点上的 关于站点/支持和帮助
转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。

相关文章

我真正的写出来了一个VxMat,一个功能正在完备的计算机语言!

我真正的写出来了一个VxMat,一个功能正在完备的计算机语言!

好像,在咱们这个环境里,找不到一个可以把按我的标题自己进行发布的正规的平台!没关系,咱就慢慢的玩儿呗!咱就在这里慢慢的说,说不定说着说着,就被人看到,然后就被人关注了呢?如果您想看看咱写出来的东西,可...

在vb.net、c#等.net程序中把程序集dll打包到exe执行文件的方法

在vb.net、c#等.net程序中把程序集dll打包到exe执行文件的方法

能够达到的效果,就是我程序生成后,就仅仅是一个Vxterm.exe可执行文件,把它拷出来就可以直接使用了,不需要安装,也不需要把附带的dll也要求带着。以下是我在参考了网上的各种乱抄的代码后,自己整理...

警惕!警告全网!你的、我的、所有人的网络,都不安全!

警惕!警告全网!你的、我的、所有人的网络,都不安全!

注意:我这里所说的被监听,并不是指国家的安全部门的监听。而是指被非法份子监听。我也不是危言耸听,也不是标题党,也不会到处复制粘贴那些自己都看不懂的信息。我的文章里所说的任何信息都是经过我自己亲自验证的...

安全的Windows 3389远程连接维护服务器,我是如何做到的?-引言

安全的Windows 3389远程连接维护服务器,我是如何做到的?-引言

我想要实现:(个人觉得最完美的远程维护服务器的实现)      除了我之外,其它人都无法向我的远程维护端口发起TCP/UDP连接。     ...

wsl中每个linux的根目录位置,直接从Windows里访问,直接拷贝文件

wsl中每个linux的根目录位置,直接从Windows里访问,直接拷贝文件

wsl的主系统目录在\\wsl.localhost\,或者是打开我的电脑,向上到桌面,就可以看到。直接在桌面上好像看不到Linux这个系统目录。打开成功后,可以看到每一个已安装的linux子系统的名字...

C#、VB.Net RichTextBox变更文件文本内容的方法,并且通过重写实现不闪屏的效果

C#、VB.Net RichTextBox变更文件文本内容的方法,并且通过重写实现不闪屏的效果

C#、VB.Net RichTextBox变更文件文本内容的方法。使用RichTextBox控件时,免不了需要变更文件中的内容。本文采用的办法是使用 SelectionStart、SelectionL...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。