canonicalタグって知ってますか?

canonicalタグって何?

BiNDupならテンプレートを使えば簡単にホームページが作れるということで、なんとなく作って公開している人も多いと思います。なんとなく見た目はそれっぽくできて満足していても、ホームページってそんなに単純じゃないことも知っておいたほうがいいです。

canonicalタグっていきなり言われても「なにそれ?」という人は多いでしょう。そもそもなんて読むのか(カノニカルタグ)も知らないという人は、BiNDupのメインターゲットであるいわゆる「ホームページ初心者」ならほとんどの方がそうだと思います。

カノニカルタグ(rel="canonical"タグ)とは、同じ内容のコンテンツが複数のURLで存在する場合に、どのURLを「正規(代表)」のページとして検索エンジンに伝えるためのHTMLタグです。

一般的に言われる使い方は、Tシャツを販売するためのページがあるとします。そして、色が3色(白、黒、グレー)があったとした時、それぞれイラストが違うこともあり別ページ(black.html、white.html、gray.html)を作ったとします。でも、これららは色と柄を紹介する写真以外は同じ内容になります。そんな時、重複ページと判断されないように「白を正規のページとする」といようなことをcanonicalタグを使って指定します。

BiNDupはcanonicalタグをURLで指定できない

そうすると、黒のTシャツのページでは

<link rel="canonical" href="https://hoge.com/t-shirt">

のように、任意のURLを指定したいですよね。でも、BiNDupはそれができません。もちろん、スクリプトと詳細設定の<head内>に記述すればhead内に記述することはできますが、BiNDupは自動的にそのページのURLをcanonicalとして記述してしまうので、<head内>に記述したとすると重複してしまうことになります。

BiNDupではcanonicalタグについての設定は、サイト設定タブの「アクセス解析設定」にある『Canonical設定』のindex.htmlを省略し末尾を / で出力にチェックをする項目しかありません。

これだと、黒のTシャツのページで、canonicalタグを白のページとして指定することはできません。そもそもこのindex.htmlを省略という指定に何の意味があるのか不思議です。

BiNDupのサポートにこの件について質問し、「任意のページのURLを指定することはできない」という回答でした。『任意にcanonicalタグを指定できるようにしてほしい』と希望を伝えましたが、反映してくれるのかは全くわかりません。

サーバー設定のサイトURL

ホームページを作って公開する時、サイト設定タブにある「サーバー設定」で自分が使っているサーバーの情報を設定します。

その時、サイトURLという項目に自分のサイトのドメインを入力しますが、そこでhttp://hoge.comとしている方が多いんです。それの何が問題なのか ....

このサイトURLの内容がcanonicalタグで使わるんです。

例えば、上記のTシャツのページを /t-shirtというディレクトリ(フォルダ)に作ったとします。白のページは t-shirt/white.htmlだとします。

BiNDupはこのページのcanonicalタグとしてこのページのディレクトリ+ファイル名の頭に「サイトURL」をつけて設定します。

そうなると、canonicalタグとしては

http://hoge.com/t-shirt/white.html

と記述されることになります。

でも、最近はサイトをhttpsで暗号化しているのが普通ですよね?

httpsを有効にしていないで使っている人は問題にはなりません。(httpsの暗号化を有効にしていないことがそもそも大問題ですが)でも、最近のサーバーでは普通無料で暗号化できますし、普通に設定していけば暗号化は有効になっていること多いです。

そうすると、自動的にhttp://hoge.com のようなアクセスはhttps://hoge.com にリダイレクトする設定がされていることが多いです。これはURLの正規化の一つで本来サーバー設定ファイルに記述を追加するなどやらないといけないことなんですが、BiNDupユーザーのほとんどである初心者の方はそんなことやっていないことが普通ですし、「URLの正規化」の説明をしても初めて聞いたという方がほぼすべてと言ってもいいくらいです。

URLのループにおちいってしまう

白のTシャツのページを見ようとして、https://hoge.com/t-shirt/white.html にアクセスしたとします。

このページのcanonicalタグには http://hoge.com/t-shirt/white.html と書かれています。こっちが正規のページなんだという指定です。

それならと http://hoge.com/t-shirt/white.html にアクセスすると、今度はURLの正規化の設定で https://hoge.com/t-shirt/white.html にリダイレクトされる。

これが繰り返させることになります。

結果としてはcanonicalタグの指定を無視して、サーバー設定ファイル(.htaccess)の指定でリダイレクトされる「https://hoge.com/t-shirt/white.html 」を対象としてGoogleはインデックスしてくれるようですが、矛盾した指定で矛盾が生じる状態になっていることになります。

「結局はhttps://hoge.com/t-shirt/white.html で表示されて、Googleもインデックスしてくれるんだからそれでいいじゃん」

と思う人もいるかも知れませんが、何も知らないままでループになっているよりは、サイトURLをhttps://hoge.com/としてあげるだけでいいんだから見直したほうがいいと思います。

サイトURLの記述がcanonicalタグに影響していることを知らない(意識したこともない)人が多いので、BiNDあるあるとして書いてみました。