ロリポップとチカッパ。この2つの名前を知っているでしょうか。どちらも、GMOグループに属するレンタルサーバー会社で、とてつもない低価格で人気です。
最近、この2つのサーバーで、存在しないページを表示させようとしたときにサーバーから返ってくるステータスコードがおかしいという噂話を聞きました。本来ステータスコードが404
となるべき時に302
が返ってくるというのです。結構話題になっているようで、「404 302」というキーワードで検索するだけで、複数のブログ記事が見つかりました。
とりあえず、引用元を逆にたどってみました。御の字でございますさんの記事が大元のようです。
- チカッパさん、すみません(御の字でございます)
この記事には、通信内容をキャプチャしたものが掲載されていて、それを見ると確かに404
ではなく302
が返ってきています。私もキャプチャして同じ結果になることを確認しました。
404
はいわゆる File Not Found で、要求された場所にはファイルがなかったことを意味します。これに対して、302
は要求されたファイルが一時的に別の場所に変更されていることを意味します。郵便物で例えると、404
は宛て先不明、302
は長期旅行などで別の場所に転送されるようなものでしょうか。
チカッパのサポートページには、エラーページをカスタマイズする方法の解説があります。それによると、.htaccess に ErrorDocument 命令を書くという方法を使うようです。ウェブサーバーが Apache であることがわかっているので、マニュアルで ErrorDocument 命令を調べてみました。
マニュアルによると、指定方法は次の3つ。
サーバー上でのファイルパスを指定する方法。エラーページのアドレスを指定する方法。メッセージテキストを指定する方法。
チカッパで行っているのは、2つ目のアドレスによる設定方法のようです。マニュアルでは、この方法を使うと問題が起きるかもしれないと書かれています。302でリダイレクトされてしまうため、存在しないファイルを見ようとしてしまったことがブラウザには伝わらないという問題が起きているのです。
リモート URL (例えば、頭に
http
と付与した方法) をErrorDocument
に指定するとき、たとえ文書が同じサーバにあろうとも、ドキュメントがどこにあるかを通知するために、Apache はリダイレクトをクライアントに送出するということに、注意してください。これにはいろいろと関連して起こる問題があります。中でも最も重要なのは、クライアントは元々のエラーステータスコードを受け取らず、代わりにリダイレクトのステータスコードを受け取るということです。これにより、ステータスコードを使って URL が有効であるかどうかを決定しようとするウェブロボットやその他クライアントを、混乱させるかもしれません。さらに、ErrorDocument 401
にリモートの URL を指定すると、クライアントは 401 というステータスコードを受け取らないため、パスワードをユーザーに入力要求しなければならないことがわかりません。従って、ErrorDocument 401
というディレクティブを使う場合は、必ずローカルな文書を参照しなければなりません。
チカッパは、なぜこの方法を選択してしまったのでしょうか。私の想像は次のようなものです。
まず、初期設定で表示されるような地味なエラーページを避けたかったのではないでしょうか。
初期設定のエラーページはファイルがないことは伝わりますが、不慣れな人はそこからどうしたらいいのかわからないという問題があります。そのためのサポート情報を表示することによって、親切なサービスを行うことができます。同時に、スポンサー広告のある自社検索ページへの誘導なども行うことができますし、グループ内のほかのサービスを宣伝することもできます。
効果的なページを表示することが出来るとなると、さまざまな装飾も必要となります。サーバー上でのファイルパスで指定すれば本来のステータスコードを返すことが出来ますが、その場合は画像などの参照がウェブ上でのものと食い違ってしまうことがあります。調整をする手間を考えると、単純にアドレスでの指定をしてしまうほうが楽なのは間違いありません。
エラーページのドメインが err.chicappa.jp
となっているように、すべてのエラーページを1つのドメインで一括管理することも出来ます。意地悪な言い方をすれば、ユーザーの利便性よりも運営の利便性を優先したと考えられます。
対処方法ですが、チカッパの場合はアドレスでの指定以外の方法でカスタマイズすればいいでしょう。default
を指定すれば、初期設定にすることもできると思います。
ロリポップは管理画面からのカスタマイズ方法が説明されているのみで、 .htaccess によるカスタマイズ方法は紹介されていませんでした。しかし、FTP で直接編集してしまえば、チカッパと同じようにすることは可能かもしれません。