ワードプレスを運用している際に、URLにパラメータを渡すことでページを出し分けすることがあります。
例えば、カテゴリーのアーカイブページとは別に、カテゴリー毎に人気の10件を表示するページを作るときに「rank」という固定ページを作って「https://hogehoge.com/rank?cat=123」こんなURLを用意したり。?cat=123
の部分がパラメーターです。
ページを作ったはいいけど、このページだけGoogleの検索結果に出ない。インデックスされない。
なぜ?
そんな時に確認してほしいのが、canonicalタグ。
なぜWordPressでパラメータ付きのURLだとインデックスされないのか
ページのソースを見たときに、<link rel="canonical" href="https://hogehoge.com/rank">
こんなタグが入っていませんか?
canonicalタグの詳細はここでは割愛します。下記ページ等をご覧ください。
簡単に言うと、検索エンジンにこのページのURLを伝えるためのタグです。
canonicalタグで設定したURLがGoogleなどの検索エンジンに登録されるURLになります。
<link rel="canonical" href="https://hogehoge.com/rank?cat=123">
つまり、こうなってないとダメだよ、ということです。
WordPressでは自動でcanonicalタグを挿入してくれるのですが、これの対象となるのが記事ページや固定ページなど、ワードプレスで作成したページのみになります。
この場合、?cat=123
のパラメータは独自で勝手につけているだけなので、「rank」という固定ページしか認識されず、
「https://hogehoge.com/rank?cat=123」でも「https://hogehoge.com/rank?cat=456」でも<link rel="canonical" href="https://hogehoge.com/rank">
のコードが挿入されます。
パラメータ付きのURLでもインデックスさせる方法
まずはWordPressが自動で挿入してくれてるcanonicalタグを削除しましょう。
テーマ内のfunction.phpに下記の1行を追加してください。
remove_action('wp_head', 'rel_canonical');
次に、header.phpの<head>~</head>
内に新しく独自のcanonicalタグを追加。
<link rel="canonical" href="<?php echo 'https://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>">
サイトのSSLが非対応でしたら、'https://'
の部分は'http://'
に変更してください。
これで<link rel="canonical" href="https://hogehoge.com/rank?cat=123">
になってるはずなので、ページのソースを確認してみてください。
あとは、重複ページ等があれば、is_page()
などで分岐しながら調整してみてください。