ウェブサイトにアクセスしようとしたらエラーメッセージが表示され、コンテンツが閲覧できない、なんて経験は誰にでもあるはず。サーバーがHTTPリクエストとリソースの競合を検知すると、「HTTP 409 Conflict」エラーが発生します。
409エラーの解決方法はシンプルで、クライアント側であれば、要求されたURLの誤字を確認して修正したり、ブラウザキャッシュをクリアしたり、ブラウザの拡張機能を削除したりして解決することができます。サイト管理者であれば、コアソフトウェアやプラグインの削除、サーバー設定の見直しで解決可能です。
今回は、409エラーの概要と原因についてご説明したあと、サイトでのエラーの特定方法と解決方法を見ていきます。それでは、早速本題に入りましょう!
「HTTP 409 Conflict」エラーについて動画での解説もご用意しています。
「HTTP 409 Conflict」エラーとは
HTTPリクエスト(ページの読み込みなど)を行った後、リクエストを完了できなかったことを伝えるエラーメッセージがブラウザに表示されることがあります。通常、原因となっている問題の詳細も併せて確認可能です。
例えば、「HTTP 400 Bad Request」エラーは、リクエストの構文が正しくない、ブラウザキャッシュが破損している、ファイルサイズが大きすぎるなど、クライアント側の問題が原因です。
他にもさまざまなHTTPステータスコードがあり、以下5つに分類されます。
- 100番台:リクエストの処理の継続を示すコード
- 200番台:リクエストの処理が完了し、正常に応答できたことを示すコード
- 300番台:他のリソースへのリダイレクトが発生したことを伝えるコード
- 400番台:クライアント側の問題に対するエラーコード
- 500番台:サーバー側の問題に対するエラーコード
409エラーは、400番台のHTTPステータスコードに該当し、リソースの現在の状態と競合が原因で、リクエストが完了しなかったことを意味します。
これだけ聞くと一見複雑に思えますが、競合を解決してリクエストを再試行することができるのでご安心を。サーバー側のエラーとは異なり、409エラーの解決策はどれもシンプルです。
「HTTP 409 Conflict」エラーの原因
「HTTP 409 Conflict」エラーは、「Conflict(競合)」という言葉通り、HTTPリクエストに何らかの矛盾があると発生します。リクエストされたリソースが期待された状態でない場合に生じる可能性があり、リクエストが完了した後に生じることもあります。
409エラーは、PUTメソッドを使用したリクエストの応答で発生するのが最も一般的です。これは対象のリソースを更新するもので、PUTメソッドによって、リソースの新規作成や置き換えが可能になります。
しかし、そのリクエストに矛盾する値があると、409エラーにつながります。例えば、特定のフィールドに誤入力があると、サーバーが矛盾を検知し、リクエストが拒否されます。
また、既存のファイルよりも古いファイルをサイトにアップロードしようとすると、バージョン管理の競合が発生して、409エラーが発生する可能性があります。
「HTTP 409 Conflict」エラーの特定方法
サイトの409エラーを特定するには、HTTPリクエストを分析し、トラブルシューティングを行いましょう。この手順については、ご利用のホスティングサービスによって異なります。
Kinstaのホスティングプランをご利用の場合は、コントロールパネルのMyKinstaでサイトログを管理することができます。まずは、MyKinstaにログインし、「サイト」タブを選択します。次に対象となるサイトをクリックしてください。
最初に表示される「情報」画面に、サイトに関する基本情報が表示されます。左側メニューから「ログ」を選択してください。
「ログビューア」で、サイトの特定のエラーログを確認することができます。この画面に409エラーが表示されていない場合は、左上のドロップダウンメニューから、DevKinstaが処理したすべてのリクエストを含む「access.log」を選択してください。
この画面では、各リクエストの以下のような各リクエストの基本情報を確認できます。
- 日付と時刻
- リクエスト(メソッドとURI)
- HTTPステータスコード(エラーコード、成功したリクエストの場合は 「200 OK」)
- 送信バイト数
- HTTPリファラ
- ユーザーエージェント
- X-Forwarded-For
サーバーリクエストの一覧からHTTPステータスコード409を見つけてください。また、PUTメソッドのリクエストもこのエラーの原因になる可能性があるため、併せて確認しましょう。
また、検索バーでフィルタリングすることも可能です。409エラーを見つけたら、早速解決していきましょう。
「HTTP 409 Conflict」エラーを解決するには(5つの方法)
409エラーの解決方法はいくつかあります。原因が不明な場合は、さまざまな方法を組み合わせてトラブルシューティングしていきましょう。以下、最も一般的な5つの方法についてご説明していきます。
1. 要求されたURLを確認する
先に述べたように、このエラーは、PUTメソッドのリクエストの情報が正しくないことが原因で発生している可能性があります。リソースを更新する際には、その宛先が正しく入力されているかどうかは必ず確認しましょう。
本格的な解決策を試す前に、まずは要求されたURLを見直してみてください。手入力をした場合には、タイプミスがあるかもしれません。
誤りを見つけたら、修正して再度リクエストを送信してみてください。場合によっては、これでエラーが解消されるかもしれません。
また、初歩的ですがページの再読み込みも試す価値ありです。しばらく時間を置けば、古いエラーは解消されることがあります。サイト管理者によってエラーが解決されている可能性もあります。
2. ブラウザキャッシュをクリアする
サイトに初めて訪れた際、ブラウザはそのページのデータをキャッシュに保存します。これによって、そのリソースに簡単にアクセスできるようになり、次回以降の訪問時には、サーバーにリソースを要求する代わりに、キャッシュされたデータを取得します。
URLの入力ミスなど、リクエストのエラーを修正しても409エラーが解消されない場合は、ブラウザキャッシュが原因である可能性が高いです。この場合は、キャッシュをクリアして、HTTPステータスコードを削除しましょう。
手順はブラウザによって異なりますが、Google Chromeであれば、画面右上にある縦3点リーダーをクリック。「その他のツール」>「閲覧履歴を消去」を選択します。
表示された画面で、「キャッシュされた画像とファイル」を選択してください。必要に応じて、「閲覧履歴」、「Cookieと他のサイトデータ」を選択してもOKです。その後、「データを削除」をクリックします。
これでキャッシュの大部分はクリアされますが、一般的にユーザーが削除を望まない追加データが残っている可能性があります。キャッシュを完全にクリアする場合は、「詳細設定」タブに移動してください。
このタブでは、以下のようなキャッシュから削除したいデータを選択することができます。
- 閲覧履歴
- ダウンロード履歴
- Cookieと他のサイトデータ
- キャッシュされた画像とファイル
- パスワードとその他のログインデータ
- 自動入力フォームのデータ
- サイトの設定
- ホストされているアプリデータ
削除するデータを選択したら、「データを削除」をクリックします。409エラーが解消されたかどうか、リクエストを再試行しましょう。
3. 最近の更新をロールバックする
HTTPエラーコードは、競合するソフトウェアが原因になっていることも。409エラーのトラブルシューティングとして、WordPressサイトを前のバージョンに戻すことも検討してみてください。コアソフトウェアがサイト上の他のツールと競合しているかどうかを確かめるのに役立ちます。
ただし、更新後に行った重要な変更が失われる恐れがあるため、実行前には必ずサイトのバックアップを作成すること。バックアップがあれば、トラブルシューティングを行った後、すぐにサイトを復元することができます。
Kinstaでは、毎日自動バックアップが行われているため、以前のバックアップを復元することによってWordPressを前のバージョンに戻すことができます。これを行うには、MyKinstaの「サイト」>(サイト名)>「バックアップ」に移動します。
復元するバックアップの「復元先を選択」をクリックし、ステージング環境と本番環境のどちらかを選択してください。
最後に、確認画面で指定されたテキストをフィールドに入力して、「バックアップを復元」をクリックして確定します。
しばらくサイトを更新していない場合は、別の方法が必要になるかもしれません。と言うのも、Kinstaの毎日の自動バックアップは14日間しか保持されないため、14日以上更新を行なっていない場合は、この方法でロールバックすることができません。
別の方法として、WP Downgradeプラグインを使用するのも手です。古いバージョンのWordPressを簡単に再インストールすることができます。
プラグインをインストールして有効化したら、「設定」>「WP Downgrade」に移動します。
「WordPress Target Version」に前のバージョンの正確な番号を入力し、「Save Changes」で保存します。
また、コンピュータの更新もロールバックすることをお勧めします。Windowsの場合は「更新の履歴」から、Macの場合は、Time Machineのバックアップを使って前のバージョンに戻すことができます。
4. プラグインと拡張機能を停止する
サイトを前のバージョンに戻すことに抵抗がある場合は、サードパーティツールとプラグインの停止だけでも、競合を解消できる可能性があります。
プラグインを無効化するには、WordPressの管理画面から「プラグイン」に移動して、すべてのプラグインを選択します。
「一括操作」のドロップダウンメニューから「停止」を選択して、「適用」をクリック。
これで409エラーが解消されたかどうか、リクエストを再試行してみてください。これでリクエストが完了すれば、エラーの原因がプラグインにあることがわかります。
問題を引き起こしているプラグインを特定するため、プラグインを1つずつ有効化し、その都度エラーが再発するかどうかを確認しましょう。
プラグインを特定したら削除しましょう。サイトに必要なプラグインであれば、プラグインディレクトリから代替プラグインを探してみてください。大抵の場合、同じ機能を持つ別のプラグインが見つかるはずです。
あるいは、クライアントのリクエストに問題がある可能性も。この場合は、ブラウザの拡張機能を無効化しましょう。Chromeでは、「その他のツール」>「拡張機能」に移動します。
すると、インストールされている拡張機能が一覧表示されます。右下にあるトグルスイッチをすべてオフにしてください。
必要のない拡張機能は削除してしまってもOKです。これでソフトウェアの競合が解消されるはずです。
5. サーバーの設定を見直す
最後の手段として、サーバーの設定に不備がないかを確認しましょう。Kinstaをご利用の場合、MyKinsta内蔵のアプリケーションパフォーマンス監視(APM)を使用してください。Kinsta APMは、時間のかかっている外部URLリクエスト、コードが最適化されていないプラグイン、低速なデータベースクエリなどを特定します。
Kinsta APMは、MyKinstaにログイン後、「サイト」>(サイト名)>「APM」に移動します。
「APMを有効化」をクリックして、一定期間のパフォーマンス監視を行います。
ポップアップ画面で、監視期間を指定します。2時間〜24時間の中から有効化する期間を択してください。
パフォーマンス監視を有効化したら、その結果をもとにトラブルシューティングを行いましょう。すべてのリクエストを表示し、サーバーの応答時間を分析します。
Query Monitorプラグインを使用する方法もあります。データベースクエリ、スクリプト、アクションフック、ブロックエディターブロックなどのパフォーマンスレベルを無料で確認することができます。
まずはQuery Monitorをインストールして、有効化しましょう。すると、管理画面の上部に新たなタブが出現します。
タブをクリックすると、サイトのクエリ、リクエスト、スクリプトなどの情報のレポートにアクセスできます。「HTTP API Calls」でリクエストエラーの一覧を確認可能です。
上記でご紹介したツールのいずれかを使えば、409エラーの根本原因をすぐに特定することができるため、サイトの他の部分のトラブルシューティングに時間を割かずに済みます。
まとめ
リクエスト中に競合が発生すると、「HTTP 409 Conflict」エラーが発生します。要求されたリソースの状態に問題があるため、サーバーが関連情報を送信できないことを意味します。競合している値を特定して、リクエストを再試行しましょう。
WordPressの「HTTP 409 Conflict」エラーを解決する方法をまとめると、以下の通り。
- 要求されたURLを確認する
- ブラウザキャッシュをクリアする
- 最近の更新をロールバックする
- プラグインや拡張機能を停止する
- サーバーの設定を見直す
Kinstaのホスティングプランには、パフォーマンスエラーの解決に必要なツールが一式揃っています。Kinsta APMを使って、外部リクエストを確認し、競合を解消して、速やかにサイトを正常な状態に戻しましょう。