ようやく理解したソフト404とハード404の違い

存在しないページにアクセスした場合に表示されるこんなページ。

「ページがありませんよ」ってことなんですが、この表示のさせ方によって、良いパターンと悪いというか推奨されないパターンがあるようです。

下記の2つの存在しないURLにアクセスしてみて下さい。

http://template.xsrv.jp/test/soft404/12345.html

http://template.xsrv.jp/test/hard404/12345.html

1つ目のURLはアクセスすると、

http://template.xsrv.jp/test/soft404/notfound.html
に転送されます。ブラウザのアドレスバーの表示が変わるので分かると思います。

この転送されてしまう状態が、ソフト404の状態に該当するようです。

実際にアクセスするユーザーに対しては、ページが存在しないことを伝えられるのですが、異なるページに転送してしまっているので、検索エンジンに対しては、正しくページが表示された状態になってしまうんです。

機械的にページが存在しないことを伝えられていないんですね。

2つ目のURLはアクセスするとURLは、

http://template.xsrv.jp/test/hard404/12345.html

のままです。

この状態がハード404の状態になります。

404とは?

404というのはステータスコードといって、サーバーからブラウザに対して返す現在の状態を示す値のことです。

200なら、正常。404なら、存在しない状態を指します。

先のソフト404の場合、このステータスコードが200になってしまうんですね。絶対にダメというわけではないんですが、システム的にちょっと不具合な状態なんです。

ステータスコードを404にするには?

存在しないページにアクセスがあった時に、自作のメッセージを書いたページを表示させる場合、.htaccessというファイルを用意します。自作のメッセージを書いたページのファイル名を、ここでは notfound.html とします。

.htaccessには下記のように記述して、サイトのトップページと同じ階層にアップロードして下さい。

ErrorDocument 404 /notfound.html

運営しているサイトのトップページのURLがサブディレクトリの形式の場合は、ディレクトリの名称を含めて記述する必要があります。

運営しているサイトのURLが

http://template.xsrv.jp/test/hard404/

としたら、.htaccessには下記のように記述します。

ErrorDocument 404 /test/hard404/notfound.html

両方ともファイルパスの前にスラッシュを付けるのがポイントですね。

http:// を入れるとNG

前述の.htaccessですが、

ErrorDocument 404 http://template.xsrv.jp/notfound.html

といった感じで、404の後に続くパスをhttpからのURLを記述してしまうと、存在しないページにアクセスした際にこのURLに転送され、ソフト404になるので注意が必要です。