IIS通过URL重写将www的域名301到不带www的域名和强制使用https访问网站
时间:2023-02-19 17:28:01 | 来源:建站知识
时间:2023-02-19 17:28:01 来源:建站知识
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://*.
http://masuit.comhttps://www.masuit.com
https://*.
http://masuit.comhttps://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配置节下保存即可。
转自原文: