简介
环境
配置
根据nexT文档-搜索服务配置
BUG
- 点击侧边栏搜索
- 搜索任意字符
- 点击任意搜索结果
预期结果:跳转到相应文章页面,页面URL应为https://xxxx.qithub.io/2018/01/01/xxx.html
显示结果:无法跳转到相应页面,页面的URL为http://0.0.7.226/01/01/xxx.html
调试
走了许多弯路,搜了半天的0.0.7.226
,费了很长时间,结果发现是hexo-generator-searchdb
生成的search.xml
中,文章的URL不对,在编码之后,文章的URL应该是下面这样的:
%2F2018%2F01%2F01%2Fxxx.html
但实际上却生成了这样的
%2F%2F2018%2F01%2F01%2Fxxx.html
多了一个%2F
,也就是说,在URL解码之后,多了一个/
但我没仔细想,为什么//2018
在innerHTML的时候会变成http://0.0.7.226
,应该是一些莫名其妙的转换吧,如果有知道的大佬请告知我原因。
看了一下hexo-generator-searchdb
作者的issues,也没发现有别人出现这种问题,想了一下,应该是此插件和hexo-abbrlink插件同时使用的原因,生成静态网页的时候多加了一个/
解决方案
因为我也没用过nodejs
,所以就暴力解决一下
在node_modules/hexo-generator-searchdb/目录下,搜索url
字段
应该有以下几个文件是需要修改的
json_generator.js
xml_generator.js
xml.ejs
把搜出来的那行中,config.root
都删掉,比如xml_generator.js文件中,相关代码是这样的
1
2
3
4
5
6
7
8 var xml = template({
config: config,
posts: posts,
pages: pages,
raw: raw,
limit: searchlimit,
feed_url: config.root + searchConfig.path
});
改为
1
2
3
4
5
6
7
8 var xml = template({
config: config,
posts: posts,
pages: pages,
raw: raw,
limit: searchlimit,
feed_url: searchConfig.path
});
重新生成hexo g
,查看搜索结果,应该就可以正常使用了。
后记
我大概看了一下,这个config.root
,大概率就是_config.yml文件中的那个root
项,但是全局搜索了一下config.root
这个字段,有多个插件在用,也就没有继续调试的兴趣了,做一条只知其然的咸鱼罢。
如果有大佬有更好的解决方案,请务必告知我,我将不胜感激!