1. 首页
  2. 文章列表
  3. IIS通过URL重写将www的域名301到不带www的域名和强制使用https访问网站

其实强制非www域名和https博主以前都是在做域名解析的时候做的DNS解析来实现的,可无奈在几天前被阿里云坑了一波之后,由于博主修改了一些DNS的配置,导致现在未备案域名不能在DNS级别做301重定向了,所以博主无奈之下只有研究在服务器级别做301重定向了,也把这次经历记在这里,方便大家有用到的时候便于参考。

无论是出于安全还是搜索引擎优化的原因,我们都希望网站在访问多个类似的域名时,最好能重定向到统一的域名,比如博主的网站可以通过以下这些域名来访问:

http://masuit.net

http://www.masuit.net

http://www.masuit.com

http://masuit.com

http://*.masuit.com

https://www.masuit.com

https://*.masuit.com

https://masuit.com

但是,我并不希望访问上面这些不同域名出现相同的页面,这对SEO来说也不友好,所以我们需要将上面这些地址都统一的永久重定向到https://masuit.com,那么怎么来实现呢?

http重定向到https

1.首先,我们需要在服务器上给IIS安装URL Rewrite这个插件和导入你的SSL证书。

2.打开“IIS管理器”控制台,在左侧菜单中选择要应用重定向的网站,找到URL重写,双击进去:

懒得勤快的博客_全栈开发者_互联网分享精神

3.单击右侧菜单中的“添加规则”。

4.在“入站”部分中选择“空白规则”,然后按“确定”:

懒得勤快的博客_全栈开发者_互联网分享精神

5.输入任何规则名称,你知道是什么意思就好了,比如“重定向到https”。

6.在“匹配URL”部分中:

- 在“请求的URL”下拉菜单中选择“与模式匹配” 
- 在“使用”下拉菜单中 选择“正则表达式” 
- 在“模式”部分输入以下模式:“(.*)“ 
- 选中”忽略大小写“框

懒得勤快的博客_全栈开发者_互联网分享精神

7.在“条件”部分中,选择“逻辑分组”下拉菜单下的“全部匹配”,然后按“添加”。

8.在提示窗口中:

- 输入“{HTTPS}”作为条件输入 
- 从下拉菜单中选择“与模式匹配” 
- 输入“^OFF$”作为模式 
- 按“确定”

- 输入“{HTTPS_HOST}”作为条件输入 
- 从下拉菜单中选择“与模式不匹配” 
- 输入“^(localhost)”作为模式 
- 按“确定”

懒得勤快的博客_全栈开发者_互联网分享精神

9.在“操作”部分中,选择“重定向”作为操作类型,并为“重定向URL”指定以下内容:

https://{HTTP_HOST}/{R:1}

10.选中“附加查询字符串”框。

11.选择您选择的重定向类型。整个“操作”部分应如下所示:

懒得勤快的博客_全栈开发者_互联网分享精神

注意:可以在该菜单中选择4种重定向规则的重定向规则: 
- 永久(301) - 在这种情况下的首选类型,它告诉客户端站点的内容永久移动到HTTPS版本。有利于SEO,因为它为您的HTTPS网站带来了所有流量,对其在搜索引擎中的排名产生了积极影响。 
- 找到(302) - 仅当您将某些页面的内容暂时移动到新地点时才应使用*。这样SEO流量有利于先前内容的位置。通常不建议将此选项用于HTTP / HTTPS重定向。 
- 请参阅其他(303) - GET请求的特定重定向类型。不推荐用于HTTP / HTTPS。 
- 临时(307) - 302重定向类型的HTTP / 1.1后继。不推荐用于HTTP / HTTPS。

12.单击“操作”菜单右侧上方的“应用”即可。

www重定向到不带www

1.按刚才的套路,先做上面的步骤1-7。

2.条件配置如下:

-条件输入:{HTTP_HOST}

-检查输入的字符串是否:与模式匹配

-模式:^www\.(.+\..+)$

懒得勤快的博客_全栈开发者_互联网分享精神

3.操作部分配置如下“重定向URL”指定以下内容:

https://{HTTP_HOST}/{R:1}

懒得勤快的博客_全栈开发者_互联网分享精神

4.单击“操作”菜单右侧上方的“应用”即可。

太麻烦了?这有现成的

上面做那么多操作,其实就是生成了一段配置,放到了我们网站程序的web.config

<rewrite xdt:Transform="Insert">
    <rules>
        <rule name="重定向到https" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
                <add input="{HTTPS_HOST}" pattern="^(localhost)" negate="true" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
        <rule name="强制重定向到不带www的顶级域名" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTP_HOST}" pattern="^www\.(.+\..+)$" />
            </conditions>
            <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

我们只需要将上面的代码放到web.config中的system.webServer配置节下保存即可。

分享到:

版权声明:

本文仅用于学习、研究和交流目的,欢迎非商业性质转载。本文链接:https://masuit.com/1288

l  博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。

l  文章内容部分来源于互联网,不代表本人的任何立场;涉及到的软件来源于互联网,仅供个人下载使用,请勿用于商业用途,版权归软件开发者所有,下载后请于24小时内删除,如有真实需要请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,并参照侵删联系的说明提交相应的证明材料,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。

l  博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。

l  博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!

l  博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道!

相关推荐:

谈一谈单例模式、静态类和线程内唯一对象有什么区别 深入理解C#中的IDisposable接口
浅谈EF中LINQ查询原理 谈一谈.NET中的并行编程(TPL)——多线程、异步、任务和并行计算
AutoMapper 6.x起步 经典面试题之——如何自由转换两个没有继承关系的字段及类型相同的实体模型
浅谈MVC的Attribute路由,教你一步一步设计出漂亮的路由 一小时学会 C#6.0 的新特性
深入浅出依赖注入容器——Autofac C# vs Java:C# 五个不可替代的特性瞬间秒杀 Java

评论区:

    还没有评论哦,赶紧来写评论吧