共计 2601 个字符,预计需要花费 7 分钟才能阅读完成。
明天分享 域名重定向 小常识,以及在腾讯云云开发 CloudBase 中实现域名重定向的实际。
痛点的诞生
之前,我开发了一个编程导航网站,将网站放到了腾讯云云开发上,用云托管(容器)的形式部署和保护。还购买了一个域名 code-nav.cn
,并且在云开发后盾 拜访服务
中,将该域名的子域名 www.code-nav.cn
和寄存网站文件的容器相关联,配置如图:
而后,大家就能通过网址 www.code-nav.cn
拜访该网站了。
然而,很快,我就发现了一个重大的问题。
有不少同学想要拜访我的网站,然而,因为他们输出的网址是code-nav.cn
,省略了网址前缀 www
,导致网站无法访问。也让我散失了一批用户。
初战 - 域名配置
要解决这个问题,其实很简略,之前是配置 www
子域名指向容器,那在云开发后盾再加一条配置,间接将购买的域名(父域名)code-nav.cn
也指向容器,不就成了么?
配置如下:
这样,无论用户是否输出 www
前缀,都可能拜访到咱们的网站啦!
看似十分完满,但目前,网站其实还存在肯定问题。
现存问题
首先,带 www 与不带 www 其实是两个不同的网址,尽管对用户来说,感觉是拜访了同一个网站。但对于搜索引擎,小蜘蛛们会把他们辨认为两个不同的网站,并且别离收录这两个门路下网站的内容,导致权重扩散。尽管对流量小的网站来说影响不大,但对于大站点,这是必须要解决的问题。
此外,拜访 code-nav.cn
(不带 www)的用户反映,网站上的数据无奈加载。这是因为,腾讯云云开发的 WEB 平安域名限度,只有在白名单内的域名才容许拜访云资源(数据、文件等),因而,还要在 平安配置
中,补上 code-nav.cn
域名。
尽管当初拜访失常了,但如果业务中还有一些和 www 网址强相干的逻辑,比方判断用户拜访的网址必须是 www.code-nav.cn
才容许登录,那么你还要去批改代码,思考稍有不周,就会导致一些性能呈现问题。
为解决这些问题,咱们能够应用 重定向
技术。
重定向
重定向是一个很宽泛的概念,即通过各种办法将各种网络申请从新定个方向转到其它地位,比方网页重定向、域名重定向、数据报文重定向等。
在网站开发中,重定向的利用场景太多了,比方用户未登录时,将它输出的网址主动跳转为登录页;用户拜访旧版网址时,主动跳转到新版网页。重定向不仅是向导,也是一名王道的保安。
因而,很多大站点都会采纳重定向技术。比方拜访谷歌google.com
,按 F12 查看开发者控制台,能够看到网址通过 302 重定向,主动跳转为了www..com
。
那问题就来了,啥是 302 重定向?
无妨看一看常见的重定向 HTTP 状态码。
重定向 HTTP 状态码
和重定向无关的 HTTP 状态码次要是 301、302、303、307、308,最罕用的是 301 和 302,能够看看 MDN 官网对它们的解释。
301 是永恒重定向(Moved Permanently)阐明申请的资源曾经被 永恒 挪动到了由 Location 头部指定的 url 上,是固定的不会再扭转,搜索引擎会依据该响应修改。
而 302 是暂时性转移(Moved Temporarily,或者 Found),表明申请的资源被 临时 挪动到了由 Location 头部指定的 URL 上。浏览器会重定向到这个 URL,然而搜索引擎不会对该资源的链接进行更新。
尽管 301 和 302 都可能将用户输出的网址 A,改为重定向后的网址 B,但他们还是有区别的:
- 搜索引擎区别: 301 示意原地址 A 的资源已被移除,永远无法访问,搜索引擎抓内容时会将网址 A 全副替换为 B;而 302 示意网址 A 还活着,搜索引擎会在抓取网址 B 新内容的同时,保留网址 A 的记录。
- 安全性: 302 跳转有网站劫持的危险,导致网站被盗用。
再战 — 云开发重定向实际
理解重定向之后,来试试怎么实现重定向,以及如何在云开发中实现域名重定向。
实现重定向的形式有很多,很大水平上依赖于你应用的 web 服务器,比方 Nginx、Apache、Tomcat 等,个别在服务器中增加几条配置即可。
我的编程导航网站是以容器的形式,部署在云开发提供的云托管性能上的。我把开发好的网站文件和提供 web 服务的 Nginx 服务器一起打包,做成了容器,于是,能够将每个容器当成一个小服务器,独立运行。
要反对重定向,只须要批改下 Nginx 的配置。比方这里我抉择给整个网站增加 301 永恒重定向,配置文件如下:
server {
listen 80;
# gzip config
gzip on;
...
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
# 增加重定向
if ($http_host ~ "^code-nav.cn") {rewrite ^(.*) https://www.code-nav.cn permanent;
}
}
不用手写和记忆 Nginx 配置,间接应用可视化界面生成即可:
详情参见这篇文章:轻松搞定 Nginx 配置代码的神器!其余的服务器配置也能够自行查阅文档,这里不再赘述。
而后,在云托管上创立新版本,公布新的容器,就功败垂成啦!
查看下成果,拜访code-nav.cn
,网站重定向到了www.code-nav.cn
,完满!
最初,回顾下在 腾讯云云开发 中实现域名重定向的残缺过程,包含如下步骤:
- 在 拜访服务 中增加父域名到网站的指向(云托管等)
- 在 平安配置 中增加父域名到白名单中
- 在 web 服务器中增加重定向配置
- 新建版本,部署公布
整个流程还是非常简单的~ 有须要的同学快去试试吧!
产品介绍
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、主动弹性扩缩的后端云服务,蕴含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端利用(小程序,公众号,Web 利用,Flutter 客户端等),帮忙开发者对立构建和治理后端服务和云资源,防止了利用开发过程中繁琐的服务器搭建及运维,开发者能够专一于业务逻辑的实现,开发门槛更低,效率更高。
开明云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
产品文档:https://cloud.tencent.com/product/tcb?from=12763
技术文档:https://cloudbase.net?from=10004
技术交换群、最新资讯关注微信公众号【腾讯云云开发】