「Canonical URL」とは、同じ内容のページを表示する複数のURLのうち、どれが「正規のURL」であるかを検索エンジンに示すものです。
「Canonical URL」を指定することにより、同じ内容のページを複数のURLで公開していても、コピーコンテンツとはみなされず、検索結果には「正規のURL」のみが表示されるようになります。
実を言うと個人的には、つい最近まで[meta="canonical"]属性の存在を軽視していました。
単純なページ構成のサイトでは、「正規のURL」をわざわざ指定するまでもないと考えていたからです。
しかし、WordPress などのCMS(Contents Management System)で構築されたサイトでは、同じ内容のページを複数のURLで公開してしまうケースがよくあります。
この状態を放置しておくと、検索エンジンからペナルティーを受ける可能性が生じます。
さすがにそれはマズいので、ごくシンプルな方法での解決策を模索しました。
詳細は以下。
WordPress で[Canonical URL]を設定する手順
まず、WordPress のテンプレートタグ <php wp_head(); >で「canonical url」を吐き出させないように、テーマファイル内の functions.php に以下の1行を記述します。
remove_action('wp_head', 'rel_canonical');
続いて、同じくテーマファイル内の header.php の任意の場所に、以下のコードを書き加えます。
<?php if (is_home()) { $canonical_url = get_bloginfo('url'); } elseif (is_category()) { $canonical_url=get_category_link(get_query_var('cat')); } elseif (is_page() || is_single()) { $canonical_url = get_permalink(); } if ( $paged >= 2 || $page >= 2) { $canonical_url = $canonical_url.'page/'.max( $paged, $page ).'/'; } elseif(is_404()) { $canonical_url = get_bloginfo('url')."/404"; } else { $canonical_url = get_bloginfo('url'); } ?> <link rel="canonical" href="<?php echo $canonical_url; ?>">
以上で設定完了。
これで適切に[Canonical URL]が吐き出されることになります。