こんにちは。クルーズ株式会社CTOの鈴木です。
今回は「脱レガシ―システム」シリーズとは少しずれてしまう話ですが、
ここ数カ月、SHOPLISTのOS/ミドルウェアのバージョンアップを複数のメンテナンスに分けて行っていて
その過程でメンテナンス画面の表示機能改修をプチ改修したという話をしようと思います。
改修を行うきっかけ
深夜メンテナンスの計画作業を行っていたと頃に、社内会議でSEO担当者から「メンテナンス時のステータスコードがいま200になっている。もしクロールされると正常ページとしてキャッシュされちゃうから503にしないとまずいです。」と初めて聞くことを言われました。
え?503ってService Temporarily Unavailable なんだけど…。ほんとに?
サーバエンジニアだと、Webサーバが標準で返すあのエラー画面の印象が強すぎて俄かに信じがたいのですが調べた結果どうやらそうらしいです。
ステータスコード503が適切な理由
複数のネット文献やSEO会社の方が言っていることをまとめて要約すると
・503はクローラ的には一時的にサイトが利用できないので後でまたクロールしてくださいという意味になるらしい
・200だとクローラは正常ページとして認識してしまうためキャッシュ対象として扱ってしまう。
・404だとページがないと判断になるのでページがなくなってモノとして認識してしまう。
だから503が適切ということらしいです。
要するにサーバエンジニアの視点でいうと5xxはサーバエラーという認識だからそんなものお客さんに返しちゃだめだしすぐサーバプログラム直さなきゃという発想なのですが、クローラのの視点だと503は一時的にサイトが利用できないという解釈になるらしいです。
なるほど!と思いながら当該箇所のソースの修正を行いました。
その時見つけた小さな問題
修正箇所を特定して直そうしたソースコードが以下なのですが
header('HTTP/1.0 200 OK');
となってました。
さらっとHTTPプロトコルが1.0になってたんで修正しました。
歴史を感じます…
こういうの含め直してかないとですね。