Hexo 搜索跳转失效?一招解决链接域名丢失问题


问题现象:博客搜索功能正常,但点击搜索结果后跳转链接丢失了站点域名,例如实际文章链接为 http://www.gloam.cn:4000/20260302020433.html,搜索后却指向 http://20260302020433.html,导致无法访问。

根本原因:Hexo 搜索插件在生成搜索数据时,只记录了文章的相对路径(即 permalink 配置值),没有自动补全站点的完整域名。

解决方案:修改主题中负责渲染搜索结果的 JavaScript 文件,将文章的相对路径拼接上站点的根路径(如 location.origin),生成绝对链接即可解决。

问题复现

根据 Hexo永久链接最佳实践:终极方案与优化指南 对文章的url进行了优化,但是优化后通过搜索无法跳转到正确的文章。

实际链接:
http://www.gloam.cn:4000/20260302020433.html

搜索后跳转链接:
http://20260302020433.html

修复指南

定位搜索功能相关文件

在主题目录中寻找负责搜索的脚本文件。以 hexo-theme-matery 主题为例,需要找到 /themes/matery/source/js/ 下的 **search.js**(或对应的 .ejs 模板文件)。

如果不确定文件名,可以搜索包含 searchFunclocal_search 或 $.ajax 加载 search.xml 的代码。

找到生成链接的代码段

在 search.js 中搜索 href 或 data.url,找到拼接搜索结果 HTML 的位置。典型代码如下:

str += "<li><a href='" + data.url + "' class='search-result-title'>" + data_title + "</a>";

此时 data.url 仅为相对路径(如 20260302020433.html)。

修改为绝对链接

将上述代码替换为使用 location.origin 拼接绝对路径,


var siteOrigin = location.origin;
str += "<li><a href='" + siteOrigin + data_url + "' class='search-result-title'>" + data_title + "</a>";

保存并验证

修改完成后,执行以下命令重新生成并预览:

hexo clean && hexo g && hexo s

打开本地预览,搜索任意文章,检查点击后的链接是否已恢复为完整域名。


文章作者: gloamfox
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 gloamfox !
 上一篇
Hexo 插件:自动转换 Markdown 相对路径链接
文章介绍了Hexo在生成静态页面时,Markdown相对路径链接失效的问题,并提供了一个通过JavaScript过滤器自动将.md文件链接转换为正确永久链接的解决方案。该方案通过解析相对路径、匹配源文件并替换为可访问的permalink,解决了浏览器无法直接解析.md文件路径的问题。
2026-03-25
下一篇 
Hexo永久链接最佳实践:终极方案与优化指南
本文详细分析了Hexo博客的多种永久链接方案,包括默认配置、标题生成、拼音插件、哈希插件等,并推荐使用基于文章创建时间的日期格式作为最佳选择。该方案完全依赖Hexo原生功能,无需额外插件,生成的URL简洁、无中文乱码、长度固定,只要在每篇文章的Front-matter中明确设置date字段,链接即可永久不变,是兼顾SEO与稳定性的最优解。
2026-03-24
  目录