ソフト404ってなんですか?

エラーページの作成の際
「.htaccess」 の記述で以下の用に進めてるサイトを、良く見かけます。

ErrorDocument 404 http://○○○○○.com/404.html



これって、「ソフト404」になるみたい!



てか、「ソフト404」って何よ! と言う話ですよね

「ソフト404」とは、

「ページが見つかりません」などのエラーを返しているように、一見、見えている
だけど、実際は、正常に処理された200のステータスコードを返してることです。



どう言うことか?

エラーメッセージを作成したものを、WEBサイトにおいて
存在しないページに、アクセスされた時に表示させることです。


要するに、アクセスしたユーザーには、
「ページは存在しないよ」と、説明されてるんだけど、


検索エンジンのクローラーには、
「ちゃんと存在してるページですよ」と200を返してることです。


それって、なんかまずいの?
Googleからは、「ソフト404」は、使うなという指示があるようです。
クローキング(不正なSEOとして検索エンジンをだましてる好意)の対象では無いみたいですが、


クロールして、インデックスしようとする時間を消費させて、
正常に存在するページ取得に悪影響をあたえるため「ソフト404」は、使うなという指示してるようです。


Googleに逆らってもしょうがないので

きちんと通常の404(ハード404)になるように
検索エンジンに対しても「存在しないページ」と伝えることが望ましいです。


で、

ErrorDocument 404 http://○○○○○.com/404.html

の場合だけど、これは、ステータスコードが302になって、要するに転送されて、
最終的には、ステータスコードが200になります。

ですので、このやり方は、「ソフト404」に、なっちゃいます。


正しいやり方は、下記のように、通常の404(ハード404)になります。

ErrorDocument 404 /404.html



カテゴリカテゴリの意味
100番台インフォメーション(案内)
200番台正常に処理 リクエストを正しく処理したことを示す
300番台リダイレクト(移転通知)
400番台クライアント側のエラー
500番台サーバ側エラー(処理失敗)





「ソフト404」と言う事は、絶対パスで作られることになり、
通常の404(ハード404)は、相対パスになります。

相対パスで作られると、画像やリンクを読み込めないので、
head内に、<base href="URL"> と記述する必要があります。

head内に、追加すれば回避できます。

<base href="URL">
URLの箇所には、ご自身のドメイン名を記述して下さい。