Googleサーチコンソールでサイトマップインデックスが減った、でもインデックスされてる?

Joomla

1ヶ月強の作業を経て公開した新サイトをGoogleのサーチコンソール(旧ウェブマスターツール)に登録しました。

サーチコンソール上でサイトマップのインデックス数が一旦増え始めたものの、減ってしまいました。思い当たる原因を修正したので、多分サイトマップのインデックス数は増えるハズ・・・現在進行形なので、期待を込めて記事にしています。

サイトマップのインデックス数減少の経緯

これまでのSEO

これまでに行っていたSEO対策は、多言語用の特殊タグ(Google用のhreflang属性とBing用のlangタグ)をつけて翻訳が終わっていないページはメタタグでnoindexに設定したり、別URLで同じ記事が表示されてしまう場合のカノニカルURL設定です。

サイトマップ送信!

サイトマップを送信して、待つこと数日後、サーチコンソールで見るとインデックスされ始めていました。Google検索で「site:サイト名」で検索しても順調にインデックス数が増えていきました。(新ドメインでソーシャル拡散も全然まだなので、Google Analyticsでのアクセス数は一日1~3件程度でそのアクセスもBOTっぽいものだけのですが・・・)

あれ?インデックスが減った!?

増えてくるかなと期待していた矢先、サイトマップのインデックス数が激減し始めました。数日待っても、また増えてくる気配はありません。

index-in-search-console-sitemaps

最大44、数日後には10程度に減少

公開直後に158もページがあるのは、サブディレクトリに設定してあって、サーチコンソール上にも宣言してある多言語のページがダブっているからです。

インデックス数が最大になった時はサイトマップは140程度でしたが、実質は翻訳を徐々に進めているので72~73ページです。タイムラグやリストページもあるので、インデックス数41ならタイムラグを考えたら上出来だと思っていました。

これはヤバイと思いつつ、思い当たる原因があったので修正しました。

原因はカノニカルURLか?

思い当たった原因は、カノニカルURLの設定です。このサイトでは、CMS(コンテンツマネジメントシステム)のJoomla!に追加でFLEXIcontentというカノニカルURLも設定してくれる拡張機能をインストールして作っています。

XML形式のサイトマップを作る拡張機能を別にインストールしているのですが、その拡張機能がFLEXIcontentのカノニカルURLとは違うURLで送信していました。

そのせいで、

  1. サイトマップのURLへGoogleがアクセスしてインデックス
  2. サイトマップ内のインデックス数が上昇
  3. 「site:サイト名」で検索した時の結果も増えていく
  4. インデックスされたページ内にカノニカルURLが別のURLで設定してある
  5. 数日後にインデックスされていたサイトマップのURLが削除され、カノニカルURLに変わる
  6. サイトマップ内のインデックス数は減少
  7. 「site:サイト名」で検索できる数は変わらない

ということが起こったのではないかと(希望的に)予想しています。

検索結果は予想が正しそうと示してる

この予想をサポートする証拠もあり、「site:サイト名」の検索結果は、投稿してから数日以上経った者はカノニカルURL、新しい投稿はサイトマップのURLを指しています。

インデックス数は復活した

数日後、書き換えたサイトマップURLでインデックスされている数が増え始めました。サイト公開直後だったので「0」のまま動いていなかったサイト全体のインデックス数も100オーバーにジャンプアップしました。

サイトマップ拡張機能「JSitemap」を編集

気持ちが悪いので、サイトマップを出力させている拡張機能「JSitemap」を書き換えてFLEXIcontentのカノニカルURLを出力するようにしました。オープンソースは素敵ですね。JSitemapは頻繁に更新される拡張機能なので、更新するたびに消えてしまうのが残念です。

自分の覚えのために・・・・編集内容を書いておきます。

/components/com_jmap/views/sitemap/tmpl/default_xml_content.php

require_once (JPATH_BASE . '/components/com_flexicontent/helpers/route.php');
$seolink = str_replace("/en/", "/", 
JRoute::_ ( FlexicontentHelperRoute::getItemRoute ( $elm->slug, $elm->catslug ).'&lang='. $elm->language ) );

ヘルパー関数を使わなくても出来ますが面倒です。また、「adapters/」ディレクトリにあるようにcom_flexicontent用のルート関数を定義したほうが後々良いかもしれませんが、JSitemapで呼び出されているページ自体はcom_contentのページで、com_contentの拡張でcom_flexicontentを呼んでいる感じなので、とりあえずコード書き換えで終わっておきます。

同じディレクトリにdefault_rss_content.phpや、dafault_html_content.phpなどがあるので、必要ならそちらも編集するようにします。

コメント

タイトルとURLをコピーしました