WordPress REST API の wp-json が404になる問題と対処
wordpress
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・セキュリティプラグインなど)が、今回の事象は固定リンク設定が主因だった。
/wp-json/ が JSON を返すことを確認してから、再度 curl などで API を呼ぶ。ルートが生きているかの簡易確認(認証不要の例):
curl -sS -o /dev/null -w "HTTP:%{http_code}\n" "${WP_BASE_URL}/wp-json/"200 付近でレスポンスが返れば、REST のエンドポイントに到達できている可能性が高い。