google

ソフト404の発生


ソフト404の発生でGoogleウェブマスターツールに怒られる

手違いで記事データのみが消失し、仕方なくgoogleやブラウザのキャッシュから記事を作り直す事件が発生してから数週間が経ちました。
 
以前からソフト404の指摘をウェブマスターツールから受けていました。
数件だったので放置していたのですが、事件以後に急増。本腰を入れて対策することにしました。
症状としては、
 
1.404.phpが表示されているのにステータスコード200(正常)を吐き出す。
2.存在しないURLを入力すると、404.phpを表示する場合と空白ページを表示する場合がある。
3.空白ページもステータスコード200を吐き出す。
 
はい、わけがわかりません(笑)
素人が一から作ったオリジナルテーマですし、functions.phpなどの重要なファイル類も事ある毎に弄っていたので、調べても該当する原因に行き当たりません。
 
最初に手を付けたのは再現テスト。同じサーバー(さくら)の別ディレクトリにwordpressをインストールして再現テストをしてみることにしました。DBは新しい物を用意してテストを実施したところ、正常に動いていました。
サーバーの問題ではないことが解ったので、今度はWordpressを疑ってみます。
wp-config.phpファイルのデバッグ項をtrueに変更して確認したところ次の様なメッセージが。
 
headers already sent ….
 
どうやらヘッダーが既に送られているので404を返せないとの事。
原因ファイルはルート直下のindex.phpファイル。
チェックしてみたところ、内容に不備はなく、はてと頭を抱えていましたが、ひょっとしたらと思って文字コードを調べていたら、ボムありのUTF-8になっていました。
もしやもしやと思ってUTF-8Nにコードを変更してFTPでアップロードすると、無事404か301を吐くようになりました!
なんというか、知識もない初心者が適当に使っていると思わぬ事態に遭遇することが多いですね。今回は無事解決できましたが、もしファイルのBOMの有無がトラブルを起こすことがあるという記述を覚えていなければ到底解決できなかったでしょう。
興味本位でオリジナルテーマを作ってしまったことに後悔しつつも、解決に至りちょっと気分のいい1日でした。