もっと詳しく

新規に取得したドメインで公開を始めたサイトのsitemap.xmlをGoogle Search ConsoleとBing Webmaster Toolsに登録して、検索エンジンにインデックスされるようにしました。いつもと同じ作業なのですが、2日後くらいにGoogleで最初にインデックスされてから、1日の間に何度も登録が現れたり、消えたりを繰り返します。Yahooもつられて同じような感じになってしまいました。

いろいろ確認してみた

いろいろなサイトの構造を流用してサイトを制作することがあるので、何か設定や内容が異なるサイトの情報になっているのかな?と以下のファイルを調べてみました。。

  • sitemap.xml
  • robots.txt
  • .htaccess
  • index.phpのheader

sitemap.xmlの内容を確認

サイトマップのURLが異なるドメインになっていないか確認しましたが、Googleの「サイトマップの作成と送信」記載されている内容に沿っており、怪しい点は見つかりませんでした。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <url>
    <loc>https://example.com/</loc>
    <priority>1.0</priority>
  </url>
</urlset>

robots.txtの内容を確認

以下のような感じで、特に問題を感じませんでした。

User-agent: *
Allow: /

Sitemap: http://example.com/sitemap.xml

.htaccessの内容を確認

.htaccessにも何かブロックやリダイレクトなどの転送の記述が残っているのかな?と見直しましたが、特に問題ありませんでした。

index.phpの<header>を確認

<header>内に以下の検索エンジンのクローラーに対してインデックスさせないようにする記載でもあったかな?と思いましたが、特にインデックスをブロックするようなソースは見当たりませんでした。

<meta name=”robots” content=”noindex”>

canonicalの設置も問題なし↓問題なさそうでコイツが原因でした(-_-;)

<link rel="canonical" href="https://example.com/index.php">

原因を考えてみた

ひょっとたらミラーサイトが原因かも?

制作が終わり、本番用サイトを公開してGoogle Search Consoleに登録したときは、まだ制作時のテストサイトを別のドメイン公開していました。同一のサイトをミラーサイトとして公開してる状態でした。Google Search Consoleではエラーが出ていませんが、重複ページとしてスパム扱いになっているのかも?と思い、テストサイトのコンテンツは削除しました。

.htaccessによるリダイレクトも追加

リダイレクトの書き方はいろいろありますが、とりあえず以下のように転送する記述を行いました。

RewriteEngine On
Redirect permanent / https://example.com/

“canonical”の修正で解決

原因が分かりました。Google Search Consoleでエラーは出ていないものの、「ページが重複しています。Googleにより、ユーザーがマークしたページとは異なるページが正規ページとして選択されました。」という表示がありました。

Google Search Consoleによるcanoical関連のエラー表示

1ページしかないサイトなのに「有効」と「除外」で2つ認識されていました。

Google Search Consoleによるcanoical関連のエラー表示

Bing Webmaster Toolsでも同様のことが起こっていました。

URLはBingによってインデックスが付けられません。
このURLは、<link rel="canoical">タグを使用して正規バージョンとして指定した類似ページの代替バージョンであるため、インデックス作成不可となります。

Bing Webmaster Toolsによるcanoical関連のエラー表示

サイトルートのトップページ(index.php)に以下のURLの正規かに使用する「canonical(カノニカル)」が原因でした。

<link rel="canonical" href="https://example.com/index.php">

index.phpの記載を削除して解決

<link rel="canonical" href="https://example.com/">

Googleではルートにあるindex.phpを「https://example.com/」と認識しているのに、”canonical”でこのページは「index.phpと認識してね」とアピールしていたため、同一ページなのにトップページが2つあると勘違いして「どうなってんの?どっちのページが本当なん?」となっていたっぽいです。(想像ですが)

ルートのindex.phpでは”canonical”は設定不要かも

SEO対策として念入りに行ったのが仇になった感じです。という訳で、サイトルートのindex.phpの場合、”canonical”の設定しないほうが無難かもしれません。AMPページやモバイル用がある場合は設定した方がいいかもしれませんが、その際はindex.phpを無しで記載する方がいいかもしれません。

参考ページ