其实这问题也是最开始的时候用 hexo-abbrlink 规则没配置好,导致它可以在后面加个 index.html

image-20240422155420310

这种规则的话,它是可以在后面加个 index.html

image-20240422155648132

那这样的话就是两个页面了,所以在 /posts/b74f504f/ 页面的评论在 /posts/b74f504f/index.html 是看不到的。

解决措施

你可以用 Navicat Premium 15 登录 MongoDB 进行修改,吧所有后面带 index.html 的删了。嘿嘿,开个玩笑

在 Twikoo 初始函数的时候添加 location.pathname.replace(/index\.html$/, ''),

Butterfly 主题可以在 themes\butterfly\layout\includes\third-party\comments\twikoo.pug 进行修改,其它主题的话,就找到这段代码加上就好了

1
2
3
4
5
6
7
8
9
10
const init = () => {
twikoo.init(Object.assign({
el: '#twikoo-wrap',
envId: '!{envId}',
+ path: location.pathname.replace(/index\.html$/, ''),
region: '!{region}',
onCommentLoaded: () => {
btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.tk-owo-emotion)'))
}
}, !{JSON.stringify(option)}))

现在不管怎么请求 index.html,他请求的数据都是没有带 index.html 的了,响应回来的数据也是一样的了。

image-20240422162918881

结语

新站的话链接规则改成 posts/:abbrlink.html 就没这个问题了,老站还是不要改了。

image-20240422163317952

参考