すべての URL 構築とコンテンツ配信を処理する Web サイトのルートにある「redirect.cfm」への Apache 301 リダイレクトを使用して、SEO URL を実装しました。
301 リダイレクト中に投稿データが失われます。
これまでのところ解決策を見つけることができず、書き直しからポスト メソッドを除外しようとしました。最悪の場合、ポスト メソッドに古いタイプの URL を使用する可能性があります。
できることはありますか?
ありがとう
すべての URL 構築とコンテンツ配信を処理する Web サイトのルートにある「redirect.cfm」への Apache 301 リダイレクトを使用して、SEO URL を実装しました。
301 リダイレクト中に投稿データが失われます。
これまでのところ解決策を見つけることができず、書き直しからポスト メソッドを除外しようとしました。最悪の場合、ポスト メソッドに古いタイプの URL を使用する可能性があります。
できることはありますか?
ありがとう
を使用することは、まさにあなたが望むもの307
でなければなりません
307 Temporary Redirect (since HTTP/1.1)
In this case, the request should be repeated with another URI; however, future requests
should still use the original URI.[2] In contrast to how 302 was historically implemented,
the request method is not allowed to be changed when reissuing the original request. For
instance, a POST request should be repeated using another POST request
2021年頃の更新
ここでの元の回答は、307
ステータスコードのリダイレクトがブラウザー間で一貫して機能する前に書かれました。以下の Hashbrown の回答に従って、307
ステータス コードを使用する必要があります。
クライアントが 301 で指定された URL に対して GET 要求を実行するため、古い回答 の POST データはリダイレクト時に破棄されます。
唯一のオプションは、POST パラメーターを GET パラメーターに変換し、リダイレクト先の URL の末尾に追加することです。これは、.htaccess ファイルの書き換えでは実行できません。
1 つのオプションは、リダイレクトする URL への POST リクエストをキャッチし、それをページに渡してリダイレクトを処理することです。コードでパラメーターの転置を行い、その方法で新しい URL をパラメーターに追加してリダイレクト ヘッダーを発行する必要があります。
更新: この回答へのコメントで指摘されているように、POST パラメーターを指定して別の URL にリダイレクトし、その URL にもパラメーターなしでアクセスする場合 (またはパラメーターが可変である場合)、ページの正規 URL へのリンクを指定する必要があります。 .
POST フォームのリダイレクトが次の GET リソースに置き換えられたとします。
http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666
このリンク レコードをページの head セクションに追加します。
<link rel="canonical" href="http://www.example.com/finalpage.php" />
これにより、すべての SEO 値がhttp://www.example.com/finalpage.phpに与えられ、コンテンツの重複による問題が回避されます。
一般的な URL 書き換えに 301 リダイレクトを使用するのは適切ではありません。ページのリクエスト数が 2 倍になるため、これはパフォーマンスの問題です (特にモバイルの場合だけでなく、一般的にも)。
TuckeyURLrewriteFilter
や apacheなどの URL 書き換えツールの使用を検討してくださいmod_rewrite
。
レイが言ったことはすべて真実です。これは、あなたの一般的なアプローチに対する追加のコメントです。