せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Webサイト】【ないわー】自分のサイトで404エラー(よりも もっとひどい事態)

 

ないわー。。。
自分のサイトでね

「記事はこちら」をクリックしたら
f:id:sekaiya:20131024082842j:plain

もう一度スタートアニメが開始される!
バグってる!!!

見つけたときは思わず声が出た。。ひいいいい

 

原因

GAEへのアップロード設定(app.yaml)の記載間違い。
 
件のインタビューページは、こんな風にhtml直指定(秘密ね)
f:id:sekaiya:20131024083015j:plain

でも、バグ当時のアップロード指定はこうなっていた
 

- url: /css
  static_dir: com/css

- url: /js
  static_dir: com/js

- url: /img
  static_dir: com/img
  expiration: "2d"

- url: /inc/(.*)
  static_files: com/inc/\1
  upload: com/inc/(.*)
  
- url: /.*
  script: com/index.php

 
*.htmlが叩かれてもパスを切っていないからindex.phpが表示されちゃう!

404よりもっとまずいよ。。
だって、自分のサイトは開始がアニメーションだから、
アニメーションが何回も表示されちゃうとか、、うっとおしすぎるよ!!
 
「完璧じゃないにもほどがある」
みたいな?


あわてて直したよ



 

再発防止策

・404ページ作成
・デプロイ前テスト作成
RSpecみたいなレスポンスの確認が出来るものを作らないと。。


 

こんなバグも

今は、任意のパス/任意のパス を指定すると、
こんなCSSが効いていない画面が表示される
f:id:sekaiya:20131024083651j:plain

理由は、上記に挙げたとおり、
任意のパスがindex.phpを指すルーティング設計になっている事と、
CSS・JSが相対パスを切っているため。
f:id:sekaiya:20131024083702j:plain

任意のパス/任意のパス に対しても対策を練らなきゃ。


 

教訓

GAEにアップするファイルの「種類」が増えたときは、
特に念入りにテストする。。

 
今回のバグは、index.html -> index.phpの変更に生じて混入した。
それまでは全て静的ファイルだから、名前とリソースの一対一の紐付けでよかったんだけれど、
スクリプトファイルはapp.yamlでの設定方法が静的リソースとすこし異なるため、
「ついでにパス設計を綺麗にしよー」と思って、バグを作ってしまった。