WordPress REST API の wp-json が404になる問題と対処
状態・症状
curlやクライアントからPOST ${WP_BASE_URL}/wp-json/wp/v2/postsなど WordPress REST API を呼ぶと HTTP 404 になる。- ブラウザで
https://(サイト)/wp-json/を開いても 404 で、JSON のルート一覧が返らない。
原因
WordPress の 固定リンク(パーマリンク)が「基本」(?p=123 形式) のままだと、サーバー環境によっては リライトルールが効かず、/wp-json/ へのリクエストが WordPress に届かない。結果として REST API のパスが 404 になることがある。
※ 404 の原因はこれだけではない(サイト URL の誤り、サブディレクトリ設置時のベース URL 違い、WAF・セキュリティプラグインなど)が、今回の事象は固定リンク設定が主因だった。
解決策
- WordPress 管理画面で 設定 → 固定リンク を開く。
- 「基本」以外(例: 投稿名)を選ぶ。
- 変更を保存 する。
- ブラウザで
/wp-json/が JSON を返すことを確認してから、再度curlなどで API を呼ぶ。
補足・確認コマンド
ルートが生きているかの簡易確認(認証不要の例):
curl -sS -o /dev/null -w "HTTP:%{http_code}\n" "${WP_BASE_URL}/wp-json/"
200 付近でレスポンスが返れば、REST のエンドポイントに到達できている可能性が高い。
