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月現在)。