状況説明
※Apacheも同じになるかは調べてないです。すいませんm(_ _)mまぁ応答コードの話なので同じになるんじゃないのかな。
nginxのリダイレクト設定(※だいぶ省略してます)
server_name www.piteki-old.jp;
location / {
return 301 https://www.piteki.com$request_uri;
}
上記のような感じで古いサイトから新しいサイトへ更新したようなケース。通常の閲覧は問題ありません。ただ、この古いドメインへのアクセスでメソッドがPOSTの場合だと、GETに変更されてエラーとなってしまう。ログはこんな感じ
古いドメイン側のログ
192.168.0.1 - - [01/Dec/2021:17:43:47 +0900] "POST /hoge/upload HTTP/1.1" 301 162
新しいドメイン側のログ
192.168.0.1 - - [01/Dec/2021:17:43:47 +0900] "GET /hoge/upload HTTP/1.1" 400 5
メソッドが変わって400エラーになってる。。。調べてみると、
301:GETメソッドは変更しません。他のメソッドに変更されるかもしれません。
「かも」ってwww
まぁ事実、うちの環境では変わっちゃってるっていうね
対応
応答コードを301から変更する
307:メソッドと本文は変更しません。(一時的)
308:メソッドと本文は変更しません。(恒久的)
nginxの設定変更
server_name www.piteki-old.jp;
location / {
return 308 https://www.piteki.com$request_uri;
}
nginx.conf再読み込みして、再度アクセス
古いドメイン側のログ
192.168.0.1 - - [02/Dec/2021:14:41:27 +0900] "POST /hoge/upload HTTP/1.1" 308 164
新しいドメイン側のログ
192.168.0.1 - - [02/Dec/2021:14:41:27 +0900] "POST /hoge/upload HTTP/1.1" 200 145214
治ったー。コンテンツ側でも問題なくなったことを確認してもらった。
コメント