前言
我的博客域名一直是使用hikki.site,但最近想换个域名了,想使用子域名blog.hikki.site来当我的博客域名,只有我的二级域名hikki.site还没想好用来做什么,我的博客在bing已经被收录了130多条,不考虑SEO的话,直接修改虽然对我的博客没有什么影响,但之前辛辛苦苦建立起来的SEO排名就白费了,所以,还是得考虑一下稍微完美一点的方法。
于是在寻找方法中发现了个方法可以达到我的要求,使用Nginx永久重定向,让搜索引擎爬虫在打开我之前的hikki.site时自动跳转到我的blog.hikki.site上,同时给我的子域名blog.hikki.site申请SSL证书,使他支持HTTPS,起码得专业一点嘛,哈哈哈。
实现过程
- 创建子域名
blog.hikki.site - 申请子域名
blog.hikki.site的SSL证书 - 安装SSL证书
- 使用Nginx实现301永久重定向
- 修改Hexo博客根目录域名
- 将博客文章带有
https://hikki.site的URL修改成https://blog.hikki.site
创建子域名
我的域名是在阿里云的万网注册的,打开域名解析,添加一条记录,参数如下:
- 主机记录:blog
- 记录类型:A
- 解析请求来源:默认
- 记录值:服务器IP地址
- TTL:10分钟(默认即可)
- 备注:博客blog

申请子域名证书
我这次一次性申请两个域名证书,使用acme.sh一次性申请多个域名是绑定一个SSL证书。
申请证书
我这里使用DNS验证方式,验证这个域名所有权是否归你所有,如果你从未使用过acme.sh证书,可以参考我这篇文章https://blog.hikki.site/2e63f4a4.html
acme.sh --issue --dns dns_ali -d blog.hikki.site -d bookmark.hikki.site
申请证书成功

安装SSL证书
创建文件夹存储证书
mkdir /usr/local/nginx/conf/cert/blog-bookmark.hikki.site
安装证书
我刚刚申请了两个域名证书,但颁布的证书只有一个,这一个证书其实blog和bookmark子域名都可以使用的,同时生成的证书名称是blog.hikki.site
acme.sh --install-cert -d blog.hikki.site \
--key-file /usr/local/nginx/conf/cert/blog-bookmark.hikki.site/key.pem \
--fullchain-file /usr/local/nginx/conf/cert/blog-bookmark.hikki.site/cert.pem \
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"

使用Nginx实现301永久重定向
原本我们还没修改blog.hikki.site域名时,我们应该是有两个server块的,一个是监听80端口跳转到443端口的server块,一个是监听443端口的server块,用于代理我们的博客的,现在我们需要将这两个旧的server块都使用301永久重定向到我们的新子域名上blog.hikki.site。
修改我们的旧server块
主要是修改几个地方:
- 修改80端口重定向的URL
- 删除监听443端口server块下的location块
- 在监听443端口的server块添加返回 301重定向URL
具体修改内容如下:
# 当打开http://hikki.site时自动跳转到blog.hikki.site
server {
listen 80;
server_name www.hikki.site;
#必加,将 blog.hikki.site 修改为你的新域名
return 301 https://blog.hikki.site$request_uri;
}
#当打开https://hikki.site时自动跳转到blog.hikki.site
server {
listen 443 ssl default;
listen [::]:443 ssl;
server_name www.hikki.site;
ssl_certificate cert/hikki.site/cert-hikki-site.pem;
ssl_certificate_key cert/hikki.site/cert-hikki-site.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
#必加,将 blog.hikki.site 修改为你的新域名
return 301 https://blog.hikki.site$request_uri;
}
添加一个新的server块
这server块的作用是代理我们的博客,也就是监听443端口,如果有使用
blog.hikki.site发起访问,则使用该server的规则。
# blog.hikki.site 博客
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name blog.hikki.site;
ssl_certificate cert/blog-bookmark.hikki.site/cert.pem;
ssl_certificate_key cert/blog-bookmark.hikki.site/key.pem;
location / {
root /www/git/hexo;
index index.html index.htm;
}
}
修改Hexo博客根目录
打开本地Hexo博客根目录下的_config.yml文件,修改URL为新域名(blog.hikki.site)

替换博客文件的旧URL
使用VS Code全局搜索替换,打开VS Code,左上角文件 --->打开文件夹--->选择博客根目录,点击这个放大镜,可以进行全局搜索,搜索旧域名和新域名,替换掉,看根据文章内容替换,不需要替换的文件,可以选择忽略该文件。

参考


