< html >
< head >
</ head >
< body >
< form method ="POST" action ="http://myhost/mydir" >
< input type ="submit" value ="→" />
</ form >
<? echo $_SERVER['REQUEST_METHOD'] ? >
</ body >
</ html >
* This source code was highlighted with Source Code Highlighter .
Apacheは、終了スラッシュなしのフォルダーのURLへのPOST要求で、スラッシュを含むURLにリダイレクトし、同時に要求がGETに変換されることがわかりました。 スラッシュを入れると、効果は消えます。
結論:アクションフォームでは、常にフォルダーのURLの最後にスラッシュを付けますが、ファイルのURLを使用します。
UPD : Nikitaが示唆しているように、この機能(最後にスラッシュを付けたURLにリダイレクト)は、apache 2.2のDirectorySlashディレクティブによって制御されます。デフォルトで有効になっており、無効にすることはお勧めしません。
UPD2 :そのようなスキームが判明
1. POSTをmysite / mydirに送信します
2.サーバーは、301からmysite / mydir /に応答します(これが正しい理由は、Apacheのドキュメントに記載されています )
3.ブラウザーは、mysite / mydir /でパラメーターなしでGETを実行します(これがその方法です。RFC2616で説明されています)
その結果、パラメーター付きのPOSTの代わりに、パラメーターなしのGETを取得します。 すべては論理的ですが、やや予想外です。