2021年1月

背景

这两天我在重新规划我的博客网站逐步前行STEP,将改版导航以及整体内容结构,将单纯的博客网站打造成集博客、资讯、工具、社区于一体的综合站点,这必然涉及到要重新规划原有的路由,直接修改路由将导致搜索引擎收录的链接或者访客收藏的网址失效,调整原网址必须保证旧的网址和新的网址同时可用,并且逐渐迁移到新的网址上。

思考

在这一点需求上,网站迁移和网页地址变更都是一致的,可以明确的是,应该在web服务器上考虑解决方案,我使用的是nginx,需要修改配置以达到从原有链接访问跳转到新的链接的效果,也就是URL重定向:rewrite 。以下是我的解决方案:

方案

1、首先需要增加新的路由,

如,我的博文地址从 
`https://www.hezehua.net/csdn_article-105052472`
修改为
`https://www.hezehua.net/blog/csdn_article-105052472`

2、按新旧地址的拼接规则,给nginx配置文件增加rewrite配置
(1)先简单介绍下rewrite语法:

rewrite regex replacement[flag];

根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记

应用位置:server、location、if

flag 参数列表:
last 本条规则匹配完成后继续向下匹配新的location URI规则
break 本条规则匹配完成后终止,不在匹配任何规则
redirect 返回302临时重定向
permanent 返回301永久重定向
(2)、设置重写规则,
如,我设置的规则是:

rewrite ^/csdn_article-([\s\S]+?)(\/|$) /blog/csdn_article-$1 permanent;