网站更换域名和访问路径,不影响老用户访问

阿木笔记
• 阅读 386

前言

提示:推荐到我的个人博客阅读: 点击阅读

越来越多的网站不使用www域名,很多网站目录通俗易懂好记住。所以今天优化了博客链接格式,从原本的 https://www.amgl.work/archives/123/ 改为 https://amgl.work/post/123。改域名的同时也要改文章路径也要保证下面这三点。

  1. 旧地址可用
  2. 搜索引擎主动更改旧地址
  3. 服务升级时不影响网站访问

提示:以下步骤针对于我自己的网站,下面案例可供参考

301跳转方案的整改

我们要做到换域名且换路径,保证这种情况下老用户依旧可以正常访问,搜索引擎主动替换旧地址并继续收录新地址。以前我们的网站访问域名时,会自动跳转到www站点且保留请求路径,是通过DNS解析当中的显性URL来实现的。

这次我们不能通过DNS来实现,因为我们的网站以前被用户使用Https协议访问过,因为浏览器缓存问题,老用户会自动的访问Https协议。如果使用了HTTPS协议访问,那就不能用URL显性解析来进行跳转。这样会导致只有新用户可以跳转,所以我们这次我们不能依赖DNS实现跳转,要使用服务器本身去做301跳转。

网站更换域名和访问路径,不影响老用户访问

镜像服务器的准备

为了不影响网站正常用户,且要保证更新是独立进行的,不会影响原站点,所以我们需要新购买一台服务器,专门用于网站热更新。也就是说我们要搭建和原来服务器一模一样的服务器。在这块方法很多,相信朋友们都能在不影响用户正常访问的情况下搭建出来。

更改本地Host文件

为了测试不会影响正常访问用户,我们需要在本地添加host,仅供自己调试使用。我们把两个域名都指向我们的新买的服务器IP。

# 博客维护临时添加的host文件
www.amgl.work 81.68.78.96
amgl.work 81.68.78.96

修改host文件后我们需要刷新电脑的DNS缓存,打开CMD输入ipconfig /flushdns刷新DNS缓存。

ipconfig /flushdns

网站更换域名和访问路径,不影响老用户访问

然后过一段时间后,打开CMD运行ping命令验证一下解析是否生效,要保证两个域名都指向我们的服务器IP,在解析生效后我们才能继续接下来的工作。

网站更换域名和访问路径,不影响老用户访问

注意:我们接下来我们所做的所有操作都在镜像服务器上运行。

添加域名及解绑域名

添加amgl.work,删除www域名。

网站更换域名和访问路径,不影响老用户访问

网站更换域名和访问路径,不影响老用户访问

批量替换网站数据库中的链接

评论链接

网站更换域名和访问路径,不影响老用户访问

评论内容

网站更换域名和访问路径,不影响老用户访问

文章内容

网站更换域名和访问路径,不影响老用户访问

自定义字段(Typecho发布文章时可选)

网站更换域名和访问路径,不影响老用户访问

网站配置

网站更换域名和访问路径,不影响老用户访问

用户链接

网站更换域名和访问路径,不影响老用户访问

设置文章永久链接

进入后台设置自定义文章链接

网站更换域名和访问路径,不影响老用户访问

配置301跳转

设置伪静态规则,为了不让老用户迷路。

网站更换域名和访问路径,不影响老用户访问

添加新站点

网站更换域名和访问路径,不影响老用户访问

配置301跳转

我们需要给www站点配置301跳转规则,为了减少老用户访问的耗时,www站点的301跳转规则可以是两条,提升速度。

网站更换域名和访问路径,不影响老用户访问

SSL证书的配置

考虑到老用户因为浏览器缓存的约束,依旧会使用Https协议访问,所以我们不能忘记配置SSL证书。

网站更换域名和访问路径,不影响老用户访问

配置好后,我们的301跳转就可以支持Https访问:

网站更换域名和访问路径,不影响老用户访问

CDN的配置

有些朋友也许和我一样,网站图片是独立的域名,做了严格的防盗链规则,所以在更换域名后无法显示图片。

网站更换域名和访问路径,不影响老用户访问

我本人使用的是CDN加速服务,所以需要在CDN控制台里添加防盗链规则。

网站更换域名和访问路径,不影响老用户访问

加上防盗链规则后我们的网站就可以正常显示图片。

网站更换域名和访问路径,不影响老用户访问

关于搜索引擎的收录问题

搜索引擎看到的跳转可以是301或者302,当搜索引擎看到301时,会去更新我们原本收录的网页地址。看到302则不会,302诞生之初就是做临时跳转使用的。我们跳转使用到nginx提供的rewrite模块,有些人担心是不是真正的301跳转。这里可以放心,可以看下面官方文档中的说明。

网站更换域名和访问路径,不影响老用户访问

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin
Stella981 Stella981
3年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
阿木笔记
阿木笔记
Lv1
尔来四万八千岁,不与秦塞通人烟。
文章
1
粉丝
1
获赞
1
热门文章

暂无数据