google「クロールエラー」(解答編2日目)

スポンサーリンク


Google Search Consoleの登録直後から発生した「クロールエラー」。解決までの道のりを日記形式でお届けしております。

前回までのおさらい

<解答編1日目から>

クロールエラーを解決するために、解決方法が記述されたサイトを探し回り、取得ページの末尾に「/」をつけるのが有効かもしれないと思い試してみると、「リダイレクトされました」。

困り果てて、レンタルサーバー(エックスサーバー)に質問をぶつけてみると、「サーバー側は巡回ロボットを制限していない」「レンタルサーバー側から異常は検知できなかった」との旨の回答が寄せられた…。

ウェブマスター ヘルプフォーラムで質問してみた

待てど暮らせど、返ってくる答えは「クロールエラー」。やはり、自分で問題を解決するしかないのでしょうか。

ここで、ひとつ名案があった。フォーラムに質問をすることだ。その道の名士に聞けば、ヒントを得ることができるかもしれない。

そこで、Google ウェブマスター ヘルプフォーラムに質問を投稿してみました。

すると、ありがたいことに1つのお返事をいただきました。

「500エラーが検出されてるみたいです。.htaccessを調べてみては?」との回答でした。

.htaccessとは

.htaccessとは、 Webサーバーをディレクトリ単位で制御するためのファイルで、 リダイレクトやBASIC認証、404エラーページの作成を行えます。 Apache (アパッチ) などのソフトウェアが使用されている環境で、 使用が可能です。

出典:SEOHACKSより

 

.htaccessは異常なし…

ただ、wordpressの中にある.htaccessを調べてみましたが、どこがどうおかしいのか、私にはさっぱりわかりません。

htaccess

.htaccess

「.htaccess」「wordpress」と検索してひっかかるサイトを手当たり次第調べましたが、私の.htaccessとなんら変わりは見られませんでした。

Cromeで500エラーの端緒を発見!

やはりダメかと諦めかけた時、次に浮かんできたのは、Cromeのデバッグから、サイトの異常を見つけることはできないかという考えでした。

スクリーンショット 2016-02-19 11.33.52

the server responded with a status of 500 (Internal Server Error)

ありました!それらしきデバッグが見つかりました!

Faild to load resource :the server responded with a status of 500 (Internal Server Error)

と書かれています。

ヘルプフォーラムの回答にあった「500エラー」のことだと思い出しました。

少しだけ、原因の端緒が見えてきましたが、ここからどう探って行けばよいのかわからないので、何の解決にも至ってません。

エックスサーバーでエラーログを取得

ここで、さらに思い出したのは、「サーバーにエラーの記録が残っていないだろうか」ということ。

すぐにエックスサーバーにアクセスして「エラーログ」の取得を試みました。

スポンサーリンク

スクリーンショット 2016-02-19 14.26.08

ありました、ありました! PHP Fatal error(致命的な欠陥)をついに発見です。

Call to undefined function scripos() in/…が何を意味しているのかが理解できなかったので、再び検索で調べてみることに。

Fatal error:Call to undefined function

PHP関数またはユーザー定義関数として存在しない関数を呼び出したという意味です。関数名の入力を間違えると発生します。
また、非常によくあるパターンとして「mb_」で始まるマルチバイト関数(mb_strpos関数、mb_substr関数、mb_strlen関数など)のトラブルがあります。PHPの設定ファイル(php.ini)では、この関数が無効になっている場合があります。

出典:PHPプログラミングの教科書 [php1st.com]

つまり、単純にPHP関数の記述を間違えているということですね。

詳しくは「scripos」という記述に問題があるなので、参考書を手にとると、正解は「stripos」でした。

エラーを吐き出しているファイルはfunctions.php

原因は、ほぼつきとめました。しかし、この記述はWordpressのどこから吐き出されたものなのかが、初心者の私には理解ができませんでした。

一つ一つ、「scripos」の文字列で検索をかけてゆくと、functions.phpにあることがわかりました。

下の図をご覧ください。

functions.php

functions.php

記述ミスは、クローラー(BOT)からのアクセス判別。間違いありません。

ミス部分を修正し、再度Fetch as Googleでページのインデックス取得を試してみると…

Fetch as Google

Fetch as Google

やりました!ステータスが無事に「完了」となり、インデックス送信も問題なく処理された模様です。あとはインデックスされるのを待つだけですね。

今回のエラー事例は特殊?

今回の私のようなクロールエラー事例は、特殊なことなのかもしれません。

なぜなら経験上、PHPファイルの場合、エラーを起こすとすぐ画面が真っ白になるので、エラーと気づくのに時間はかかりません。

しかし、今回はサイトのページはしっかり表記されるにもかかわらず、インデックスの取得のアクセスが拒否されるとなると、原因がどこにあるのかわかりづらくなるようです。実際、サポートで助けていただいた方は.htaccessを疑っていましたが、本当の原因はfunctions.phpの関数に誤りがあったのですから。

ただ、functions.phpにクローラーの判別に関する記述をしていたことさえ覚えていれば、もっと早く原因にたどり着けたのかもしれません。最初の投稿が、いかに的外れなのかも振り返ってみるとよく理解できます。

ただ本を写しながらコードを記述するだけでは、サイトは完成しても、何も成長していないということなのでしょう。もっと精進しなければ、と反省しきりです。

同じようにクローラーのエラーでお困りの方は、こちらの記事が参考になっていただければ幸いです。

スポンサーリンク


google search console

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ABOUTこの記事をかいた人

新聞社の記者をしています。仲間との起業を夢見て、これまでに学んできたノウハウを記しておきます。現在、主に結婚新聞や企業・団体向けの広報紙を制作していますが「こんな紙面をつくってほしい」とのご要望にも随時お応えしています。