我在清理的时候发现有几千个网址没有被收录,仔细一看发现很多链接都是错误的,没有带html后缀,访问直接就404了。

错误页面

错误地址

我感觉减少这些错误的地址对于收录的权重来说还是比较重要的,我们可以点进去看一下这些地址从哪里来的。

数据从哪里来

点击放大镜可以看到

数据详情

我发现这些地址都来自于他们本身

地址详情

然后在f12搜索网站所有代码之后发现这个地址在head标签里。

万恶之源

<link rel="canonical"> 是 HTML 中的一个元素,用于指定当前页面的规范化链接(canonical link)。它的作用是帮助搜索引擎确定网页的主要版本,特别是在存在多个相似或重复内容的情况下。

在你提供的代码中,<link rel="canonical" href="https://blog.zhheo.com/p/a921895f"> 指定了当前页面的规范化链接为 “https://blog.zhheo.com/p/a921895f"。这意味着搜索引擎将会把这个链接视为该页面的主要版本。这对于帮助搜索引擎正确索引和排名你的网页,特别是当你的网站有重复内容或有多个相似页面时,是非常有用的。

修改问题

找到产生问题的原因,修改就比较简单了。butterfly主题是在themes/butterfly/scripts/helpers/page.js文件中。我们看到下面的代码:

1
2
3
hexo.extend.helper.register('urlNoIndex', function (url = null) {
return prettyUrls(url || this.url, { trailing_index: false, trailing_html: false })
})

修改为:

1
2
3
hexo.extend.helper.register('urlNoIndex', function (url = null) {
return prettyUrls(url || this.url, { trailing_index: false, trailing_html: true })
})

修改后我们就可以看到地址完好存在了。

地址修改

目前在我观察下例如安知鱼等一堆主题都存在这个问题,这些地址无法访问且被搜索引擎认为能访问,结果一访问就404。建议大家检查一下canonical中的地址能否正常访问,避免存在这个问题。