2

スタックオーバーフローのユーザー、

次のパスに POST されたデータを受け入れる必要がある Apache アプリケーションがあります。

/sample/HostChange/Submit
/sample/HostChange/SubmittoAPI

現在、次の 301 リダイレクト ルールを使用しています。これは、POST がリダイレクトされ、2 番目の要求がすべてのデータを失う GET であるため、私が望むものではありません。301 リクエストは正しい URL に送られますが、2 番目のリクエストは GET であり、405 レスポンス コードが発生します。

.htaccess:

RewriteEngine On
Redirect 301 /sample/HostChange/Submit /event
Redirect 301 /sample/HostChange/SubmittoAPI /date

リダイレクトの使用が問題だと確信しています。これらの POST ヒットを新しいパスにリダイレクトするために使用する必要がある正しい RewriteCondition を理解するのを手伝ってくれる人はいますが、データはアプリケーションに送信されたままにします。

ありがとうございます。

4

3 に答える 3

0

POSTを(POSTとして)リダイレクトできるとは思いません。ブラウザはデータを再度POSTしません。

ブラウザがデータを新しいURLに再POSTするようにするには、Javascriptを使用してHTMLを出力する必要があります。

または、リダイレクトする代わりに、サーバー側のコードで最初にPOSTデータを受け入れてから、何らかの方法で(URLに識別トークンを使用してリダイレクトしている可能性があります)内部にディスパッチします。

または、データが短い場合は、URLを書き直して、データをクエリパラメータとして含めます。

于 2012-12-21T01:36:00.860 に答える
0

次の行に沿った何かが機能するはずです。現在、私はApacheインスタンスの周りにいないので、正規表現は試していませんが、書き換えログを確認して、それがどのように動作するかを確認してください.

RewriteEngine On
RewriteLog /var/log/httpd/rewrite.log
RewriteLogLevel 9
RewriteCond %{REQUEST_URI} /sample/HostChange/Submit
RewriteRule ^/sample/HostChange/Submit(.*) /event/$1 [P,L]
于 2012-12-21T01:40:44.057 に答える