質問: 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)でリダイレクトされるのをやめたい。
回答: rewrite を使うといいと思います。 ``` location /foo { rewrite /foo /foo.php; } ```