0.環境
[CentOS] 5.6 (32bit版カーネル)
[Apache] 2.2.3
[PHP] 5.4.1
[Laravel] 4.1.23
1.問題
PHPのLaravelフレームワークを使っていたら、AjaxでPOSTした値がサーバ側で取得できずにはまりました。
①から②へ test という名前で hoge という値を送信します。
① Javascript側
② PHP側
ログ出力結果を見ると、下記のようにPOST値が取得できていません。
[2014-07-16 12:09:36] local.DEBUG: [] []
2.原因
Firefox の “Live HTTP headers” アドオンでURLの遷移を見たところ、下記のようにリダイレクトしていることがわかりました。(違いは末尾のスラッシュ)
↓↓↓
ソースを grep したところ、.htaccessでリダイレクトしていました。
■ ソース
app-root/public/.htaccess
■ 記述
# Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301]
3.対策
Laravel は trailing slash 非推奨なのか? とにかく下記のように修正。
[修正箇所] 上記ソース ajax-test.js (6行目)
[修正内容] URLの末尾のスラッシュを削除し、/test に修正。
ログにもPOST値(hoge)が出力されました。
[2014-07-16 13:03:39] local.DEBUG: hoge [] []