※2012年12月1日より新ブログに移行しました。自分で言うのもおこがましいですが、20代の頃に書いた本ブログよりも、30代に入ってから書いている現行ブログの方がはるかに中身が濃く、内容が多岐にわたり、面白いと思いますので、是非ご覧いただけるとありがたいです!
>>>現行ブログ free to write WHATEVER I like
June 22, 2012

titleタグの重複をjavascriptで回避する対策(livedoorブログ編)

拍手してくれたら嬉しいな⇒
 ブログのアクセス数が4月下旬に激減したので、googleのウェブマスターツールをのぞいてみたら、案の定googleでの表示回数がひどいことになっていた。3月から4月中旬までは1日10,000〜12,000回だったのに、4月25日には5,000回と約半減している。その後、5月に急激に盛り返したものの、これは5月10日にデビュー20周年を迎えたミスチル関連の記事へのアクセスが高かったためであり、一時的な要因に過ぎない。6月に入っても、1日5,000回前後の表示回数は変わらず。

検索クエリ推移

 何か悪いことをしたかなぁ?と思って、「最適化」⇒「HTMLの改善」を開けてみると、すごい数のHTMLエラーが検出されていた。おそらく、これが原因でgoogleからペナルティーを食らったのかもしれない(4月25日以前にはこれらのエラーが検出されていなかったのかどうかは不明)。

ウェブマスターツール(改善前)

 livedoorブログの場合、トップページやカテゴリーアーカイブページに表示する記事の件数を設定すると、その数を超える古い記事は、「http://(ブログのURL)?p=2」、「http://(ブログのURL)/archives/cat_XXXXXXX?p=2」というように、URLの末尾にページ数のパラメータがついたページへと回される。ところが、これらのページのtitleタグは、livedoorのテンプレートをそのまま使用する限り、中身が全く同じになってしまうので、googleに「タイトルタグが重複している」と判断されてしまうわけだ。

 私のブログでは、トップページに掲載する記事数を3件に設定している。記事数は1,000本を超えているので、パラメータつきのページが300以上もある計算になる。この300ページ超のtitleタグが全く一緒であるから、googleには大量のミラーサイトを吐き出しているとでも勘違いされているんだろうな(なお、上の画像でエラーが400を超えているのは、カテゴリーアーカイブページのtitleタグの重複も含まれるため)。

 ちなみに、「重複するメタデータ(description)」のエラーも同じ理屈で、トップページのmetaタグに<meta name="description" content="<$BlogDescription$>">という記述が入っていると、パラメータつきのページのdescriptionも全て同じになってしまう。最近では、descriptionの内容はSEO上ほとんど効果がないとされているから、このmetaタグは削除して構わないだろう。

 問題のtitleタグの重複だが、パラメータの数字をうまく使って、「ブログタイトル名(○ページ目)」みたいにすることができれば、titleタグの重複を避けることが可能なはずだ。だが、Web上で質問してみたところ、「そんなのできない」とか、「できたとしても重複は避けられない(冷静に考えればわかるだろ?)」などと言われる始末。バカ野郎!FC2ブログでは解決できた事例があるのに(「「タイトルタグの重複」をjavascriptで回避する(ファンブログ、FC2)」を参照)、何でlivedoorブログでできないんだ??と半ば怒り心頭で、FC2ブログのソースを見よう見真似してみたら、あっさり解決できた(そら見たことか)。⇒《2012年7月4日追記》ページ下部に修正コードあり

 やり方は非常に簡単。テンプレートカスタマイズ画面で、トップページの</body>の直前に、以下のjavascriptを挿入する。
<script type="text/javascript">
var pageurl = document.URL;
var pageurll = pageurl.match(/\w+/g);
if (pageurll.length > 6) {
document.title = document.title + "(" + pageurll[6] + "ページ目)";
}
</script>
 太字の数字は、ブログのURLによって変わるので、うまく表示されない場合は数字を微調整してください(上記はあくまでも私のブログの場合)。トップページからこの記事をご覧になっている方は、ページ右上部の「次の3件」というリンクをクリックして2ページ目に移動すると、また個別記事ページでこの記事をご覧になっている方は、一度トップページに戻っていただいて同様の操作をすると、titleタグが「マネジメント・フロンティア〜終わりなき旅〜(2ページ目)」となっているのがお解りになると思う。

 なお、カテゴリーアーカイブページのテンプレートにも、同様のスクリプトを追加すれば(太字の数字は変える必要がある)、titleタグの重複を回避できる。私の場合は、「カテゴリー名|ブログ名(○ページ目)」と表示されるようになっている。

 数日後には、googleの検索結果にも「(○ページ目)」と表示されるようになった。「5ページ目」で検索しているのに、肝心の5ページ目が出てこないのが問題だが・・・。

マネジメント・フロンティア検索結果

 カスタマイズから約1週間後、ウェブマスターツールを見てみると、エラー数が若干減った。全ページがクロールされるまでに時間がかかるから、エラーが完全に消えるのはまだ先になりそうだけれども、ひとまずこれで様子を見るとするか。

ウェブマスターツール(経過1)

《2012年7月4日追記》
 この方法だと、実はタグのアーカイブページにおける問題が回避できないことが判明した。以下の通り、タグの文字列コードの特定部分が切り取られ、同じタグのページは全て「(E8ページ目)」みたいになってしまう。

マネジメント・フロンティア_検索結果

 そこで、タグのアーカイブページにも対応できるjavascriptを新しく書いた。URLにパラメータが設定されていたら、URL末尾のページ番号を取得して、titleタグを「ページ名+(○ページ目)」に書き換える、という処理。このスクリプトなら、トップページ、カテゴリーアーカイブページ、月別アーカイブページ共通で使える。
<script type="text/javascript">
var pageurl = document.URL;
var pageurll = pageurl.match(/\w+/g);
var pageno = pageurll.length - 1 ;

if (pageurl.indexOf("?p") != -1 ) {
document.title = document.title + "(" + pageurll[pageno] + "ページ目)";
}
</script>

おススメの書籍

トラックバックURL

このエントリーのトラックバックURL:

コメント

大変参考になりました。ありがとうございます。
ただ、ページ下部の改良型の方は、末尾の</script>が抜け落ちているせいで、そのままでは機能しなくなっているようですが…
諸事情があり返信が送れて大変申し訳ありません…
また、上記ご指摘ありがとうございます。
これは完全に誤記ですので、早速修正しました。
どこを探しても書いていなかったものがここに書かれていました。
重複で悩んでいる人は多いと思いますので、もっとほかの人に知って欲しいですね♪
ライブドアのは修正しましたが…
ワードプレスでも使えるのでしょうか?
タイトルタグの、月間アーカイブとかが重複されます…
どこを探しても難しい書き方で書いていて、「わかっている人」にしかわからないような書き方でした。
大変参考になりましたので、もしこれを見ている人がいたら是非ここを活用してください!!
>重複で検索激さがりさん

お役に立てて嬉しいです。
ワードプレスは使ったことがないため、本記事のやり方で修正できるかどうかは未検証です。
申し訳ありません・・・。

コメントする