Hexoのgenerateで出力されたHTMLの閉じタグがおかしい!

Ads

Google先生のインデックスに登録されている情報がどうもおかしい。。
具体的には、検索結果に表示されているdescriptionが意図しない物になっている。
generate後のHTMLを見てみると。。

generate後のhtml
1
2
3
4
5
6
7
8
9
<html>
<head>
<meta charset="utf-8">
....
</head>
</html>
<body>
....
</body>

ん?? headタグの直後でhtmlタグが閉じられてますやん!!

対象のテンプレートを確認してみる。
layout.ejsとhead.ejsが怪しい。

layout.ejs
1
2
3
4
5
<%- partial('head') %>
<body>
....
</body>
</html>
head.ejs
1
2
3
4
5
6
<!DOCTYPE html>
<html<%= config.language ? " lang=" + config.language.substring(0, 2) : ""%>>
<head>
<meta charset="utf-8">
...
</head>

一見おかしなところはなさげに見えるが、
よくよくみると、htmlタグが2つのテンプレートをまたがる形になっていたので以下のように修正。

修正後のlayout.ejs
1
2
3
4
5
6
7
<!DOCTYPE html>
<html<%= config.language ? " lang=" + config.language.substring(0, 2) : ""%>>
<%- partial('head') %>
<body>
....
</body>
</html>
修正後のhead.ejs
1
2
3
4
<head>
<meta charset="utf-8">
....
</head>
修正後のgenerateされたhtml
1
2
3
4
5
6
7
8
9
 <html>
<head>
<meta charset="utf-8">
....
</head>
<body>
....
</body>
</html>

なおった!
テンプレートをparseする際に閉じタグが無いと、優しさで閉じタグを出力してくれる模様。
これで正しいHTMLになったはず。

あまり、関係ないとはおもうけれど、サイドバーに表示されているものを除外するために、asideタグに

1
class="nocontent"

も追加しておいた。
これでGoogle先生にクロールされるのを心静かに待つことにする。

SEOの調整を自分でやらなければいけなかったりしますが、
カスタマイズでゴリゴリいける自由度の高さがHexoの魅力ですね!

Ads