Joruri CMS*1は、Ruby on Railsで書かれたオープンソースのCMSである。
このJoruri CMSの機能を使って作成したアンケートフォームに、iモードブラウザ1.0でアクセスすると不幸が起こる。
アンケートフォームへ入力することは可能であるが、いざ送信しようとすると
The change you wanted was rejected.
Maybe you tried to change something you didn't have access to.
というメッセージが表示される (´・ω・`)
このメッセージで検索してみるといろいろとヒットするがよくわからない。
google:"The change you wanted was rejected."
Joruri CMSのアンケートフォームに限って言えば、このメッセージの原因はユーザのブラウザがCookieを食わないことにある。
昨今、このようなブラウザはiモードブラウザ1.0ぐらいしかない。
NTT docomoのiモードブラウザは、2.0からCookieに対応しているが*2、このバージョンが搭載された携帯電話は2009年5月以降に発売された機種である*3。
とは言え、ユーザにとって見れば"The change you wanted was rejected."と言われても何のこっちゃ、である。
仕方が無いので、iモードブラウザ1.0からのアンケートフォームへのアクセスは全てsorryページにリダイレクトする。
/var/share/joruri/config/rewrite/base.conf に挿入
## imode browser 1.0 RewriteCond %{REQUEST_URI} ^/アンケートフォーム一覧のディレクトリ名/[0-9]+(/|$) RewriteCond %{HTTP_USER_AGENT} DoCoMo/1.0 [OR] RewriteCond %{HTTP_USER_AGENT} DoCoMo/2.0.*c100|c10 RewriteRule ^(.*)$ /sorry.html [L] ## Mobile, Smartphone (略)
参考:nambei-x's blog: iモードブラウザ1.0からのアクセスを別のページにリダイレクトするための.htaccessの記述
別途、404.htmlをコピーしてsorry.htmlを作っておく
/var/share/joruri/public/sorry.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>406 Not Acceptable</title> </head> <body> <p>ご利用の携帯電話では、ホームページからのアンケート入力ができません。</p> <p>お手数ですが、お電話にてお問い合わせください。</p> </body> </html>
iモードブラウザ1.0の挙動を確認するには、FireMobileSimulator(http://firemobilesimulator.org/)*4が便利。
*2:作ろうiモード:iモードブラウザ2.0新機能一覧 | サービス・機能 | NTTドコモ
*3:作ろうiモード:iモードブラウザ | サービス・機能 | NTTドコモ
*4:主要3キャリア(DoCoMo/Au/SoftBank)の携帯端末ブラウザをシミュレートして、モバイルサイト開発を容易にするために作成されたFirefoxのアドオン