碎碎念
我之前一直使用的域名都是 ljxh-h.cc.cd。后来在让 Bing 收录的时候,不知道为什么,Bing 已经建立索引了,但是我没有办法搜索到这个域名。我以为是我操作时不小心动到了什么东西,让这个域名被污染了,于是,我又换到了 msqy.cc.cd。
问题依旧。Bing 死活不显示在搜索结果中。我也咨询了 Bing Webmaster Tools 团队好几次,他们也不说具体原因,只说“你的网站不符合规范,请根据文档进行操作”。没办法了,只好问 DeepSeek。DeepSeek 用最直接、最真相、最不绕弯、最扎心、最硬核、最干脆、最不墨迹、最戳痛点、最不留情面、最一针见血、最开门见山、最单刀直入、最不铺垫、最不客套、最不煽情、最不废话、最不拐弯、最不磨叽、最不装、最不端着、最不啰嗦、最不拖沓、最不委婉、最不掩饰、最不藏着掖着、最直白、最露骨、最实在、最通透、最毒辣、最爽快、最解气、最上头、最够劲、最过瘾、最粗暴、最有效、最狠、最准、最稳、最绝、最顶、最炸、最刚、最烈、最飒、最莽、最冲、最猛、最脆、最亮、最透、最干、最净、最利落、最霸道、最硬核、最生猛、最狂野、最直白、最粗暴、最不讲虚的、最不玩套路、最不搞形式、最不整虚头巴脑、最只讲干货、最只说重点、最只给结果、最只聊真相、最只谈核心、最只戳关键的方式来告诉我:
因为 cc.cd 的母域名 .cd 注册局早已瘫痪,过期域名无人清理、长期被滥用于垃圾站,Bing 直接判定其为高风险“僵尸域名池”,所以哪怕索引了也死都不会给你展示。
虽然 Bing 没有证实这一点,但是这句话还是有道理的。
当然也有可能是我的网站建立时间太短了,权威性不高,但我已经等了两个月了!我之前有一个 cc.cd 域名,Bing 一索引就能搜索到。那时候能显示,大概是因为当时 Bing 的要求比较宽松吧。
要解决这个问题最简单的方法是:买一个 .com、.net 这样的域名,可惜要钱。
DeepSeek 推荐了 GitHub Pages 的默认域名 <yourusername>.github.io。这个域名背后是 GitHub,比较稳定,而且“是微软亲儿子”,Bing 的信任度可能比较高。
那就用 <yourusername>.github.io 吧,毕竟很多人都选这个。
但是,GitHub Pages 毕竟是国外平台,访问速度是大家有目共睹的慢。那怎么搞比较好?
解决方案
我想到了个绝佳的好方法:以 Github Pages 为主站,搜索引擎、友链交换都用这个;用更快的 Cloudflare Pages 部署博客,使用 cc.cd 域名作国内镜像站。
那该怎么提示中国大陆用户去镜像站呢?
提示用户前往镜像站
首先要解决提示信息何时出现的问题。
如果我们把提示信息组件放在 <body> 里面,通过 JavaScript 控制显示隐藏,那么这个脚本可能会被浏览器最后加载,到了这时候,资源文件基本已经加载完了,再提示用户去镜像站就没有意义了。
那直接把组件和 JavaScript 嵌入到 <head> 里吧。一般的浏览器都会最先加载 <head> 部分,只要浏览器获取到了 html,那么浏览器必定能获取到内嵌的 JavaScript,不会被其他资源文件加载所阻塞。
至于在 JavaScript 显示组件的时机,应该是要获取到用户位置后立即显示,如果等 DOM 加载完成,那太晚了,资源文件可能已经加载好了。
获取用户位置,最简单的就是使用 IP 地址获取用户位置的 API 了。向 API 发送请求后,API 会返回带地区代码的数据。我们只要判断数据中的地区代码是否属于中国大陆即可。
知道了基本实现逻辑,那就可以直接写代码了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
(function () { const MIRROR_HOST = '替换为你的镜像站'; const API_URL = '替换为你的 api';
if (window.location.hostname === MIRROR_HOST) return;
let isChina = false; let requestFinished = false; let bannerCreated = false; function handleResponse(data) { const country = data.country || data.country_code || data.region || ''; isChina = /中国|CN|China/i.test(country); requestFinished = true; tryCreateBanner(); }
const xhr = new XMLHttpRequest(); xhr.open('GET', API_URL, true); xhr.timeout = 5000; xhr.onload = function () { if (xhr.status === 200) { try { const data = JSON.parse(xhr.responseText); handleResponse(data); } catch (_) { } } }; xhr.onerror = xhr.ontimeout = function () { }; xhr.send();
function tryCreateBanner() { if (bannerCreated) return; if (!isChina || !requestFinished) return; if (!document.body) { setTimeout(tryCreateBanner, 20); return; } createBanner(); bannerCreated = true; }
if (document.body && document.readyState !== 'loading') { }
function createBanner() { const banner = document.createElement('div'); banner.id = 'msqy-banner'; banner.style.cssText = ` position: fixed; top: .4rem; left: .9rem; right: .9rem; z-index: 99999; max-width: 600px; margin: 0 auto; background: var(--efu-card-bg, #fff); color: var(--efu-fontcolor, #363636); border-radius: 12px; padding: 16px 20px; box-shadow: 0 8px 30px rgba(0,0,0,0.15); font-size: 14px; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; display: flex; align-items: center; justify-content: space-between; gap: 12px; border: var(--style-border, 1px solid var(--efu-card-border, #e3e8f7)); box-sizing: border-box; transition: opacity 0.3s ease, transform 0.3s ease; opacity: 0; transform: translateY(-10px); `;
const textWrapper = document.createElement('span'); textWrapper.style.cssText = ` flex: 1; line-height: 1.5; color: var(--efu-fontcolor, #363636); `; textWrapper.innerHTML = ` 🌏 检测到您在中国大陆,建议访问国内镜像站 <a href="https://${MIRROR_HOST}${window.location.pathname}${window.location.search}" style="color: var(--efu-blue, #425aef); font-weight: 600; text-decoration: none;"> ${MIRROR_HOST} </a> ,速度更快。 `;
const closeBtn = document.createElement('button'); closeBtn.innerHTML = '✕'; closeBtn.style.cssText = ` background: none; border: none; font-size: 18px; cursor: pointer; color: var(--efu-secondtext, #a1a2b8); padding: 4px 6px; line-height: 1; transition: color 0.2s; flex-shrink: 0; `; closeBtn.addEventListener('mouseenter', () => { closeBtn.style.color = 'var(--efu-fontcolor, #363636)'; }); closeBtn.addEventListener('mouseleave', () => { closeBtn.style.color = 'var(--efu-secondtext, #a1a2b8)'; }); closeBtn.addEventListener('click', () => { banner.style.opacity = '0'; banner.style.transform = 'translateY(-20px)'; setTimeout(() => banner.remove(), 300); });
banner.appendChild(textWrapper); banner.appendChild(closeBtn); document.body.appendChild(banner);
requestAnimationFrame(() => { banner.style.opacity = '1'; banner.style.transform = 'translateY(0)'; }); } })();
|
将这段代码嵌入到 <head> 里即可。
Solitude 主题自带了嵌入功能:
1 2 3 4 5 6 7
|
extends: head: - <scripts>#在这里嵌入代码</scripts>
|
这样,Hexo 在生成静态文件时,就会将这段嵌入到每个 html 文件的 <head> 部分。
部署
代码准备好了,接下来就是部署到 GitHub Pages 上了。我建议新建一个名为 <yourusername>.github.io 的仓库,将静态文件上传至该仓库,在仓库设置中开启 GitHub Pages。这样博客就会部署到根目录下,不用担心资源文件路径引用问题。
Hexo 有一个 hexo deploy 命令,能帮你自动把资源文件上传到仓库,特别方便,只要先安装 hexo-deployer-git 插件:
1
| npm install hexo-deployer-git --save
|
1
| pnpm add hexo-deployer-git
|
1
| yarn add hexo-deployer-git
|
在 Hexo 配置文件中设置:
1 2 3 4 5
| deploy: type: git repo: <repository url> branch: [branch] message: [message]
|
之后直接 hexo deploy 即可。
Cloudflare Pages 可以直接关联 <yourusername>.github.io 仓库,也可以新建一个源码仓库,通过源码构建部署。
Bing 收录与 SEO 优化
如果有两个内容相似的网站的话,Bing 会降低网站的排名。
不过要解决这个问题很简单,只要在 html 文件的 <head> 插入:
1
| <link rel="canonical" href="你的主网站域名" />
|
即可。Bing 会优先索引你的主网站,镜像站不会被收录。
如果是 Hexo 博客,只要将配置文件中的
改为你的主网站即可。Hexo 在构建时会自动加入上述标签。
至于 <yourusername>.github.io 的收录情况,我会在这里更新。
结尾
折腾了大半天,终于解决了博客的域名问题。但愿能被 Bing 收录吧。不过收不收录也无所谓了,毕竟我一开始选择 <yourusername>.github.io 作主域名,也只是看中它更稳定罢了。