多域名 hexo 静态网站处理

应 LHY 的请求,我撰写了本文

本文记载了我是如何处理多个域名对一个静态网站的情况下,多个访问域名不同的节点之间的关系。

情况详述

本站通过多个免费静态网站托管服务商发布,访问地址:

服务器 访问链接(请使用https协议访问)
Vercel服务器 https://cjh0613.now.sh/blog
Github主站 https://cjh0613.github.io/blog
Bitbucket服务器 https://cjh0613.bitbucket.io/blog
Gitee备用站 https://cjh0613.gitee.io/blog
Netlify备用站 https://cjh0613.netlify.app/blog
Coding备用站(停用) https://carhq2.coding-pages.com/blog

其中,各服务器的内容是完全一致的,但又有不同(部分区别参见 静态网站托管服务商评比)。那么,如何处理它们的关系呢?

搜索引擎优化

首先,选定一个主服务器。这是由于搜索引擎会对不说明首选版本的一组完全相同的网页降权。按此修改 hexo 与主题的 _config.yml 。我选择的是 cjh0613.github.io ,微软后台。不管您用 sitemap , API ,还是手动提交链接,请只向搜索引擎提交包含此域名的网页链接。强烈建议使用 主动推送Hexo博客新链接至谷歌、必应、百度搜索引擎站长平台以提升网站收录质量和速度的插件hexo-submit-urls-to-search-engine,现在我的一篇文章刚发布5分钟,即可在必应搜索到

另外,打开网页源码,对所有网页加入标记首选网页的标签,例如:

1
<link ref="canonical" href="https://cjh0613.com/20200507StaticWebsiteServiceProvider.html">

这样搜索引擎抓取网页时就知道您选定的规范网页了。现在比较优质的 hexo 主题都支持按照 hexo 设置,自动生成此标签了。您可查看源码。如没有此标签,请自行处理或联系主题作者。

节点间引导

各节点互有优劣。如 Github 后台强大,但中国内地速度慢;Gitee 中国内地速度快,但不稳定(前段时间某党开会前后断断续续),后台不如微软……

所以我分享时使用 Github 站,再用弹框将用户引导至 Gitee / Vercel 。

弹框实现

您需要修改主题源代码!

实践证明,谷歌会对一打开就调用 js 自带的弹框函数的网站降权。于是我找到了一个 js 前端 layer ,使用的 div 框。

首先,在网页源代码<head></head>间添加(尽量靠前,jquery后)引入 layer :

1
<script src="https://cdn.staticfile.org/layer/3.1.1/layer.min.js"></script>

然后网页源代码<head></head>间,引入 layer 后添加(当然可以保存至 .js 文件,再引入):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
var cjhurl = window.location.host;//域名
pthurl = window.location.pathname;//资源地址
var lang = navigator.language||navigator.userLanguage;//语言,使用中文的人大多在中国内地
lang = lang.substr(0, 2);//截取lang前2位字符
if(cjhurl == 'cjh0613.github.io'){if(lang == 'zh'){
layer.confirm('检测到您使用中文但访问本站境外服务器,建议访问速度快的 Gitee备用站 / Vercel服务器', {
title:"等待网页加载……",
btn: ['Gitee备用站','Vercel服务器'] ,//按钮
shade: 0
}, function(){
window.location.href="https://cjh0613.gitee.io"+pthurl;//跳转 gitee
}, function(){
window.location.href="https://cjh0613.now.sh"+pthurl;//跳转 Vercel
})
}}
</script>

我还设置了检测到为 Gitee 服务器,在文章顶提示分享时使用 Github 服务器。也使用了类似 js 代码。主题不同具体设置也不同,就不复制过来了。

评论

基于 Github Issue 的评论系统(如 Gitalk)都使用了 Github API,然而它在中国内地并不稳定,即使是 Github 安卓官方客户端也不稳定,断断续续。因此不建议选用它们。

来必力等仅支持单域名站点。经我实践,最好选用 Valine,免登录,自行配置后还可开启邮件提醒。请自行 谷歌/百度

(您还可以在归档页搜索文章标题)