Hexo全文搜索地址错误

2021-04-05 20:05≈ 153字≈ 1分钟

Hexo搭好已经6天了,正常使用感觉非常好,今天发现了一个问题,在使用全文搜索的时候,如果你当前的页面不是首页,那么搜索出来的地址是错误的。

跟踪了一下错误地址,发现是额外增加了当前地址造成的。

用我的网站举例,比如说当前的地址是:https://www.igerm.ee/categories/gossip/,然后我随便搜索一个内容

image-20210405200959515

第一个文章的实际地址应该是:https://www.igerm.ee/2021/04/04/tech/Hexo美化优化极致追分/

但是添加在a标签里面的地址是:https://www.igerm.ee/categories/gossip/2021/04/04/tech/Hexo美化优化极致追分/这样就导致点击标题无法进入文章页面,而进入了404页面

初步猜测有可能是地址自动拼接造成的,看一下源码,我相信search部分如果没有特殊需求,大家的源码都是复制官方插件的demo,那么咱们的应该是一致的,从isMatch部分开始:

 1if (isMatch) {
 2   str += "<li><a href='" + "<%- theme.avatar.path %>" + data_url + "' class='search-result-title'>" + orig_data_title + "</a>";
 3   var content = orig_data_content;
 4   if (first_occur >= 0) {
 5   // cut out 100 characters
 6   var start = first_occur - 20;
 7   var end = first_occur + 80;
 8
 9   if (start < 0) {
10      start = 0;
11   }
12
13   if (start == 0) {
14      end = 100;
15   }
16
17   if (end > content.length) {
18      end = content.length;
19   }
20
21   var match_content = content.substr(start, end);
22
23   // highlight all keywords
24   keywords.forEach(function (keyword) {
25      var regS = new RegExp(keyword, "gi");
26      match_content = match_content.replace(regS, "<span class=\"search-keyword\">" + keyword + "</span>");
27   });
28
29   str += "<p class=\"search-result-abstract\">" + match_content + "...</p>"
30   }
31   str += "</li>";
32}

第二行的str就是输出a标签的地方,可以看到我已经在前面添加了"<%- theme.avatar.path %>",因为data_url里面的地址是文章地址去掉网站地址的部分,如果你不在前面补全网址,那么在页面上就会自动以当前页面的地址进行拼接,也就造成了上面提到的错误,这里我将我自己网站主地址拼接完整,那么搜索出来的地址就没问题了。