三分钟,带你学习和实践域名重定向

大家好,我是鱼皮,今天分享 重定向 小知识,以及我在腾讯云云开发中实现域名重定向的实践。

孽起

之前,我开发了一个编程导航网站,将网站放到了腾讯云云开发上,用云托管(容器)的方式部署和维护。还购买了一个域名 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 才允许登录,那么你还要去修改代码,考虑稍有不周,就会导致一些功能出现问题。

为解决这些问题,我们可以使用 重定向 技术。

重定向

重定向是一个很广泛的概念,即通过各种方法将各种网络请求重新定个方向转到其它位置,比如网页重定向、域名重定向、数据报文重定向等。

在网站开发中,重定向的应用场景太多了,比如用户未登录时,将它输入的网址自动跳转为登录页;用户访问旧版网址时,自动跳转到新版网页。重定向不仅是导游,也是一名霸道的保安。

因此,很多大站点都会采用重定向技术。比如访问百度 baidu.com,按 F12 查看开发者控制台,可以看到网址通过 302 重定向,自动跳转为了 www.baidu.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 configgzip 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 可视化配置

详情参见这篇文章:轻松搞定 Nginx 配置代码的神器!

其他的服务器配置也可以自行查阅文档,这里不再赘述。

然后,在云托管上创建新版本,发布新的容器,就大功告成啦!

新建版本

查看下效果,访问 code-nav.cn,网站重定向到了 www.code-nav.cn,完美!

查看网络请求

总结

最后,回顾下在腾讯云云开发中实现域名重定向的完整过程,包括如下步骤:

  1. 访问服务 中添加父域名到网站的指向(云托管等)

  2. 安全配置 中添加父域名到白名单中

  3. 在 web 服务器中添加重定向配置

  4. 新建版本,部署发布

整个流程还是非常简单的~

如果本文对大家有帮助,请一定要给个 点赞 + 在看 支持呀!❤️

往期推荐

完了,最近被她们迷住了!

气炸!又一次被编辑器坑了!

我工作中不可或缺的宝贝们!

B 站面试官:“啥是重定向?”相关推荐

  1. 网爆B站面试官在北邮校招时,炫耀身价过亿资产、贬低北邮应试者:你们太浮躁,眼界太窄

    目前该事已经冲上知乎热搜第一了! 知乎网友吐槽: 1.北邮人眼界太低了,仅限于一个圈,不如我家孩子,五岁不会说中文,只会说英语,可以和白人交流. (你家孩子学不会中文可能智商不太够) 2.某40余岁中 ...

  2. 我身家过亿!B站面试官被指炫富歧视北邮学生引爆热搜

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:zhihu 编辑:yaxin [导读]近日,一则关于B站游戏面试官贬低北邮校招生 ...

  3. B站翻车了? B站面试官:我身家过亿!被指炫富歧视北邮学生上知乎热榜!

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Mistakes are part of life. You sh ...

  4. B站面试官“飘了”,可游戏行业不应只有面包

    大部分游戏公司恐怕都是"心比天高,命比纸薄" 前些日子,B站爆出注册"biligame"商标,本想着很快就能看到B站关于游戏业务的下一步操作,怎料,操作没看着, ...

  5. B站面试官炫耀身价过亿,贬低北邮应试者引热议!不知北邮毕业的B站创始人作何感想?

    前段时间分别给小伙伴们介绍过一些因为招聘人员口出狂言得罪广大网友上热搜的事件,例如:如何用一句话得罪 95% 的中国人?昨天这家公司做到了....广州一公司招开发,"不加班的都是垃圾&quo ...

  6. B 站校招面试官“炫耀资产、贬低应试者”?当事人发长文回应,北邮学子要求向学校道歉

    ‍ 作者 | Carol 出品 | CSDN(ID:CSDNnews) 数十个企业展位.诱人的薪酬福利宣传单.一个个手持简历的学子--小伙伴们应该很熟悉这样的场景,没错,"金三银四" ...

  7. 站在面试官角度,看求职与内卷

    最近团队有人员变动,然后就顺理成章的开始招聘事项,下面作者尽量从流程全貌和大家总结一下面试过程,最近好多读者都在和我私聊说年底跳槽的事,也正好可以提供另一个角度做参考. 一.招聘需求 互联网的行业的内 ...

  8. B站校招面试官“炫耀资产、贬低应试者”?当事人发长文回应,北邮学子要求向学校道歉...

    作者 | Carol 出品 | CSDN(ID:CSDNnews) 数十个企业展位.诱人的薪酬福利宣传单.一个个手持简历的学子--小伙伴们应该很熟悉这样的场景,没错,"金三银四"的 ...

  9. 面试B站,结果面试官牵着一条狗出来面试我....这是什么操作??

    黑客技术 点击右侧关注,了解黑客的世界! Java开发进阶 点击右侧关注,掌握进阶之路! Python开发 点击右侧关注,探讨技术话题! 前两天我去B站面试,结果面试官牵着一条狗就过来了,这是个什么操 ...

最新文章

  1. shell的嵌入命令大全
  2. 【python记录】使用ip摄像头 vlc打开rtsp服务 python远程调用摄像头记录过程
  3. [react] 在构造函数中调用super(props)的目的是什么?
  4. c 语言中fgetc函数,C 库函数 - fgetc()
  5. sencha extjs4 command tools sdk
  6. linux中 ls |wc -l
  7. 最小生成树(Prim算法+Kruskal算法)
  8. js对于radio的处理
  9. HTTP协议原理与代码实践之大纲
  10. 【安全热点】阿里巴巴月饼门,观点两极化,孰对孰错?
  11. 黑鲨重装计算机安装无法继续,黑鲨装机大师常见问题详解
  12. 创立10年,已成为自助建站翘楚的 Squarespace .这五大成功经验.
  13. MATLAB仪表示数读书识别GUI设计
  14. Web 3D集成开发环境【nunuStudio中文版】
  15. IP地址冲突怎么办? 如何解决局域网IP地址冲突?
  16. 看动画理解「链表」实现LRU缓存淘汰算法
  17. 新员工加入企业微信的2种方法:邀请和被邀请
  18. EVA QQ安装手册 - GCC/GNU/Linux Delphi/Window Java/Anywhere - C++博客
  19. live555学习-H264VideoStreamParser详解
  20. 什么是auto?auto的作用?

热门文章

  1. C#种将String类型转换成int型
  2. 【例题 8-13 UVA - 11093】Just Finish it up
  3. 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象
  4. BFS HDOJ 2102 A计划
  5. mysql之mysqldump命令
  6. IIS相关问题及解决方案
  7. 宝宝的成长脚印6/15
  8. FireFox与IE的兼容
  9. 使用 python 的 urllib2和 urllib模块爆破 form 表单的简易脚本
  10. vim-snipmate编写snippet的语法