2026年9月9日

2026年9月9日

WordPressのフィードURLが「Feed does not exist」と表示される場合の原因と修正方法

フィードリーダーやRSS連携サービスに登録しようとして「Feed does not exist」(フィードが存在しない)と表示される場合、WordPress側では「フィードのURLが404を返している」「フィードが無効化されている」「フィードのXMLが壊れている」のいずれかが起きていることがほとんどです。この記事では、ブラウザとコマンドでフィードの状態を確かめ、どの原因に当たるかを見分けて直す手順を解説します。

「Feed does not exist」の意味

最初に押さえておきたいのは、この文言はWordPressのコアが出す決まったエラーメッセージではない、という点です。多くの場合、フィードを読みに来たリーダーやサービスが「指定されたURLから有効なフィードを取得できなかった」ことを、それぞれの言葉で表示しています。プラグインやテーマが独自に同様のメッセージを出す場合もあります。

そのため、解決の第一歩は「WordPressがそのURLに何を返しているか」を自分の目で確かめることです。WordPressのフィードは標準で次のURLから取得できます。

  • サイト全体の投稿:https://example.com/feed/
  • コメント:https://example.com/comments/feed/
  • カテゴリー別:https://example.com/category/スラッグ/feed/
  • パーマリンク設定に関係なく使える形式:https://example.com/?feed=rss2

状態を確かめる手順

ブラウザで2種類のURLを開く

/feed/ と /?feed=rss2 の両方をブラウザで開き、結果を比べます。この比較で原因の大半を絞り込めます。

/feed/ /?feed=rss2 考えられる原因
404 表示される パーマリンク(リライトルール)の問題
404やエラー 404やエラー フィードがプラグインやコードで無効化されている
XMLのエラー XMLのエラー 出力の先頭に余計な文字や警告が混ざっている
表示される 表示される リーダー側の登録URLやキャッシュ、アクセス制限の問題

ステータスコードとContent-Typeを確認する

ブラウザの開発者ツールで「ネットワーク」タブを開いてからフィードのURLを読み込むと、ステータスコードとレスポンスヘッダーを確認できます。SSHが使える環境なら curl でも確認できます。

curl -sI https://example.com/feed/

正常なRSS2フィードであれば、ステータスは 200、Content-Type は application/rss+xml を含む値になります。404 ならURLが見つかっていない、200 でも text/html ならフィードではなく通常のページ(エラーページやログイン画面など)が返っていると判断できます。403 の場合は、セキュリティプラグインやWAF(Webアプリケーションファイアウォール)がリーダーからのアクセスを拒否している可能性があります。

フィード検証サービスで中身を確認する

ブラウザでは表示できるのにリーダーが受け付けない場合は、W3Cのフィード検証サービス(Feed Validation Service)にURLを入力すると、XMLとしてどこが不正かを行番号つきで教えてくれます。

原因別の修正方法

作業の前に、編集するファイル(.htaccess、functions.php など)のバックアップを取っておいてください。

パーマリンク(リライトルール)の問題

/?feed=rss2 は表示されるのに /feed/ だけが404になる場合は、/feed/ というURLをWordPressの内部処理に結びつけるリライトルールが正しく働いていません。プラグインの有効化・無効化やサーバー移転の後に起きやすい症状です。

まず管理画面の「設定」→「パーマリンク」を開き、何も変えずに「変更を保存」を押します。これでWordPressのリライトルールが作り直されます。WP-CLIでも同じことができます。

# リライトルールを作り直す
wp rewrite flush

# /feed/ がどのルールに一致するかを確認する
wp rewrite list --match=/feed/

それでも直らない場合はサーバー側を確認します。Apacheでは、WordPressのディレクトリにある .htaccess にWordPress標準のリライト設定(# BEGIN WordPress から # END WordPress まで)があるかを見ます。Nginxでは、location / の中に try_files $uri $uri/ /index.php?$args; のような、存在しないパスを index.php に渡す設定が必要です。

パーマリンク設定が「基本」(?p=123 の形式)のままの場合、/feed/ 形式のURLは使えません。この場合は /?feed=rss2 の形式で登録するか、パーマリンク設定を変更します。

カスタム投稿タイプのフィードがない

カスタム投稿タイプのフィード(/投稿タイプのスラッグ/feed/)が404になる場合は、register_post_type() の設定を確認します。アーカイブを持たない設定(has_archive が false)では、投稿タイプのフィード用のURLも作られません。

register_post_type( 'news', array(
    'label'       => 'お知らせ',
    'public'      => true,
    'has_archive' => true,
    'rewrite'     => array( 'slug' => 'news', 'feeds' => true ),
) );

設定を変えた後は、前述の方法でリライトルールを作り直してください。

フィードが無効化されている

どちらのURLでもフィードが出ない場合は、プラグインかテーマのコードでフィードが止められている可能性があります。フィードを停止する機能はフィード専用のプラグインのほか、SEO系やセキュリティ系のプラグインに含まれていることもあります。プラグイン「Health Check & Troubleshooting」のトラブルシューティングモードで、プラグインをすべて無効にした状態のフィードを確認すると切り分けが早く進みます。

テーマの functions.php に次のようなコードがないかも確認します。

  • do_feed や do_feed_rss2 に対する remove_action() や add_action()
  • template_redirect でフィードへのアクセスを別のページに転送する処理

一方、remove_action( 'wp_head', 'feed_links', 2 ); のようなコードは、HTMLの <head> からフィードの案内(<link rel="alternate">)を消すだけで、フィード自体は残ります。ただし、サイトのトップページのURLを入れるとフィードを自動で探すタイプのリーダーは、この案内を手がかりにしているため「フィードが見つからない」と表示することがあります。このような場合は、リーダーにフィードのURL(/feed/)を直接登録すると解決します。

XMLが壊れている

ブラウザやリーダーで「XML宣言は文書の先頭にのみ記述できます」といった趣旨のエラーが出る場合、フィードの出力の先頭に空白行や不要な文字が入っています。よくある原因は、functions.php や wp-config.php の末尾にある ?> の後の改行、またはファイルの先頭のBOM(バイトオーダーマーク)です。PHPだけで書かれたファイルでは、末尾の ?> を省略すると、この問題を防げます。

また、WP_DEBUG_DISPLAY が有効だと、PHPの警告がフィードの中に出力されてXMLが壊れることがあります。本番環境では表示をオフにし、エラーはログに記録する設定にしてください。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

URLの変更やキャッシュの問題

カテゴリーのスラッグを変えた、サイトをHTTPSに移行した、ドメインを変えたといった場合、リーダーには古いURLが登録されたままになっています。リーダー側の登録を新しいURLに変更してください。サイト側でリダイレクトを設定している場合でも、リダイレクトを追わないサービスがあります。

キャッシュプラグインやCDNが、一時的に返した404をフィードのURLで保存していることもあります。修正後はキャッシュを削除し、curl で再確認してください。

まとめ

  • 「Feed does not exist」はWordPressコアの決まったメッセージではなく、リーダー側が「有効なフィードを取得できない」と伝えている場合が大半です。
  • /feed/ と /?feed=rss2 を比べると、リライトルールの問題か、フィード自体の問題かを切り分けられます。
  • リライトルールは「設定」→「パーマリンク」の保存か wp rewrite flush で作り直します。サーバーの .htaccess やNginxの設定も確認します。
  • フィードの停止機能やXMLの出力エラー、古いURLの登録、キャッシュも原因になります。
  • 本記事の手順はWordPressの安定版の動作を前提にしています(2026年10月現在)。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲