今年2月に構築(Apache 2.2)したオリジナルCSMで「投稿しているのにGoogleボット(Google Search Console)の方でインデックスされない」という事件。
WordPress と似たようなシステムにしたのにな.... ということで原因究明から解決までの道のりを記録。
今後 Google Search Console のアルゴリズムも変わる可能性あることから現時点の定点記録になれば、と思う次第です。
Googleが選択した正規URLが違う
Google Search Console の カバレッジ を開くとインデックスされたページを確認できます。
私のサイトの場合は以下のように。(3つ目の画像は本件のターゲットサイト)
インデックスされていないページ(画面上の除外)はたくさんあり、SEO的に問題となるもの、問題にならないものとありますが、
「重複しています。送信された URL が正規 URL として選択されていません」
という注意文は ??? ですよね。
今回インデックスされていないページもこの「重複しています。送信された URL が正規 URL として選択されていません」の中にありました。
個別ページのボット読み込み内容を確認すると、所定のURLではなく トップページ を Google は読み込んでいることが判明。
この問題を解決すればいいことがわかりました。
問題は .htaccess か プログラムか
WordPressを初め PHP 系の CMS では一般的にアクセスあったURLを一旦 index.php に持っていき、URLパラメータに応じたページを紹介。そのため .htaccess で全てのアクセスを index.php に持ってくるのが一般的。
Webで検索すると WordPress の .htaccess は
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
とよく紹介されています。
実際の WordPress の .htaccess のコードはバージョンによって異なり、上記のような記載があるもの(2016年ごろ?)や rewrite プログラム処理内でリダイレクトを指定するもの(2020年ごろ?)、それから今は
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
と違います。
一旦現行タイプの .htaccess に書き換えてみるも、 Google ボットは相変わらず index.php を読み込みます....
WordPress の rewrite プログラムと流れ的には変わらないので、一体どうしたものか... と久々に悩むところ。
.htaccessのデバグ
一般的には .htaccess のデバグはログを確認して.... というところと思いますが、手早くチェックできる Webサービスもあります。
https://htaccess.madewithlove.be/
表面上は問題なく動作している Webサイト も内部的にはエラーが....
どうもファイルのアクセス制御部分がうまくいっていないよう....
試しに URLを https://△△.com/〇〇-〇〇-〇〇-〇〇-〇〇 から https://△△.com/〇〇 にするとOK。
また https://△△.com/〇〇_〇〇_〇〇_〇〇_〇〇 もOK。
- と _ で .htaccess の認識は異なるんですね。
そんなことも知らないのか!! と お叱りを受けそうですが、知りませんでした。
SEO的には URL、 - の方が好ましい、実際にそうしているサイトが多い、という事実もあります。
何か別の策もあるかもしれませんが、一旦はアンダーバーに変更し、問題が解決されるかを確認。
(WordPress のパーマリンクも 〇〇-〇〇-〇〇-〇〇-〇〇 にするとエラーになりました)
サイトマップのプログラムを変更(lastmodも)し、
http://www.google.com/ping?sitemap=https://〇〇.com/sitemap.xml
にアクセス。
今のところクロールはきてなく、本当に今回の問題が解決されたかどうかすぐにはわかりませんが、少し時間をあけて確認してみたいと思います。
本件については、私の方に非がある可能性が高いので、お客様には請求なしで対応させて頂いております。
作業時間: 10時間
P.S.
CMS は WordPress 以外にもいくつかありますが、 .htaccess の設定、どれも全て正しい、とは限らないことも。
納品した後で「インデックスされない ??? 」 という事件にならないよう、事前に .htaccess のデバグ、やっておきたいですね。
私と同じ過ちを犯さないよう、お気をつけくださいませ。
結果
.htaccess も関係あったかもしれないですが、
<link rel="canonical" href=" ">
の href が全て index.php になっていました...
こちらを修正したらちゃんとブログ記事の URL を Google がインデックスしてくれるようになりましたね。
単純なミスが原因で難しい問題に発展していましたが、根気強く問題と向き合った結果、問題は解決されました。
この Google Search Console については、お客様が管理しないのでバレない、と考える方もいらっしゃるようですが、結果的にはWebの効果が出ていない、という結果でWebへの不信感にもつながりますので私は起きている現象はお客様と共有し、できること・できないこと の中でお客様に貢献していきたい考えです。