Hexo全文検索アドレスエラー
2021-04-05 20:05 ≈ 391字 ≈ 2分

Hexo をセットアップしてから 6 日経ちましたが、今日、全文検索を使用すると、検索されるアドレスが間違っていることがわかりました。

間違ったアドレスを追跡したところ、現在のアドレスを追加したことが原因であることがわかりました。

たとえば、私の Web サイトを例に挙げると、現在のアドレスは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ページに入ります。

暫定的な推測としては、アドレスの自動結合が原因ではないかと考えられます。ソース コードを見ると、「検索」部分に特別な要件がなければ、皆さんのソース コードは公式プラグの「デモ」からコピーされていると思います。 -in なので、isMatch からセクションが始まります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if (isMatch) {
str += "<li><a href='" + "<%- theme.avatar.path %>" + data_url + "' class='search-result-title'>" + orig_data_title + "</a>";
var content = orig_data_content;
if (first_occur >= 0) {
// cut out 100 characters
var start = first_occur - 20;
var end = first_occur + 80;

if (start < 0) {
start = 0;
}

if (start == 0) {
end = 100;
}

if (end > content.length) {
end = content.length;
}

var match_content = content.substr(start, end);

// highlight all keywords
keywords.forEach(function (keyword) {
var regS = new RegExp(keyword, "gi");
match_content = match_content.replace(regS, "<span class=\"search-keyword\">" + keyword + "</span>");
});

str += "<p class=\"search-result-abstract\">" + match_content + "...</p>"
}
str += "</li>";
}

2 行目の str は、aタグが出力される場所です。 data_url のアドレスが先頭に "<%-theme.avatar.path %>" を追加していることがわかります。記事のアドレス。Web サイトのアドレス部分を削除します。前の URL を入力しないと、ページは現在のページのアドレスと自動的に結合され、上記のエラーが発生します。ここではメインのアドレスを結合します。自分のウェブサイトを完全に削除すれば、検索されたアドレスで問題ありません。