すべてのURL構築とコンテンツ配信を処理するWebサイトのルートにある「redirect.cfm」へのApache 301リダイレクトを使用して、SEO URLを実装しました。
301リダイレクト中に投稿データが失われます。
これまでのところ解決策が見つからないため、書き換えからpostメソッドを除外しようとしました-最悪の場合、postメソッドに古いタイプのURLを使用できます。
できることはありますか?
ありがとう
クライアントが301で指定されたURLに対してGET要求を実行するため、POSTデータはリダイレクト時に破棄されます。
唯一のオプションは、POSTパラメーターをGETパラメーターに変換し、リダイレクト先のURLの末尾に追加することです。これは.htaccessファイルの書き換えでは行えません。
1つのオプションは、POSTリダイレクトされるURLへのリクエストをキャッチし、リダイレクトを処理するためにページに渡す。コード内のパラメーターの転置を実行してから、新しいURLをそのように追加したパラメーターでヘッダーをリダイレクトします。
更新:この回答へのコメントで指摘したように、POSTパラメータを指定して別のURLにリダイレクトし、そのURLもパラメータなしでアクセスします(またはパラメータは変数です)、指定する必要がありますページの正規URLへのリンク。
POST次のGETリソースに転置されたフォームリダイレクトを言う:
http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666
このリンクレコードをページのヘッドセクションに追加します。
<link rel="canonical" href="http://www.example.com/finalpage.php" />
これにより、すべてのSEO値が http://www.example.com/finalpage.php に確実に渡され、コンテンツの重複に関する考えられる問題が回避されます。
を使って 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
- ウィキペディア
一般的なURLの書き換えに301リダイレクトを使用するのは適切な方法ではありません。これはパフォーマンスの問題です(特にモバイルの場合だけでなく、一般的にも)。ページに対するリクエストの数が2倍になるためです。
TuckeyのURLrewriteFilter
やApache mod_rewrite
。
レイが言ったことはすべて真実であり、これはあなたの一般的なアプローチに関する追加のコメントです。