indexディレクティブを使うとリダイレクトが発生してしまう
NginxでURLパスを静的ファイルにマッピングする設定を行っています。
http://www.test.com/foo/
とアクセスしたら、実際は、
http://www.test.com/foo.php
が実行されるイメージです。
設定としては、locaion{index..}
という方式で行っています。
上記の例だと以下のような設定をしてます。
location /foo {
index foo.php
}
意図しない動作
仕様ではindexディレクティブは、指定されたファイルへ内部リダイレクションされるとあります。しかし、実際は外部リダイレクション(301 Moved Permanently)され、ブラウザに戻ってきてから、再度、サーバに要求を飛ばす動作になってしまっています。
そのため、POSTで要求を投げた場合、indexディレクティブにより、外部リダイレクションされ、それを受けたブラウザは、GETでリダイレクト(ほとんどのブラウザの仕様)するため、サーバはGETでしか認識できないのと、その際、POSTのパラメータが欠落してしまいます。
やりたいこと
http://www.test.com/foo/
にアクセスし、 http://www.test.com/foo.php
と実行させたい。
実現できれば、location{index}
形式でなくてもよい。
とにかくブラウザに301(302, 303, 307)でリダイレクトされるのをやめたい。