2026年6月25日

2026年6月25日

WordPressで特定のページだけ404になる原因と直し方

サイト全体ではなく、特定のページや投稿だけが「ページが見つかりません」(404)になる場合、原因はそのページの設定か、そのURLと重なる別のものにあることがほとんどです。この記事では、確認しやすい順に原因を調べる方法を説明します。内容は 2026年11月時点の WordPress のソースコードと developer.wordpress.org の資料で確認しています。

すべての投稿や固定ページが 404 になる場合は、パーマリンクや .htaccess の設定がサイト全体で壊れています。その場合は サイト移行後の404エラーの直し方 を参照してください。

1. ページの公開状態を確認する

管理画面の「固定ページ」(投稿なら「投稿」)の一覧で、そのページの状態を見ます。

状態 ログインしていない人に見えるもの
公開 ページが表示される
下書き・レビュー待ち 404
予約済み(公開日時が未来) 公開日時になるまで 404
非公開 404(ログインした編集者・管理者には表示される)
ゴミ箱 404
パスワード保護 パスワードの入力欄が表示される(404 にはならない)

管理者でログインしたまま確認すると、非公開のページも表示されてしまいます。404 の確認は、ログアウトした状態か、ブラウザのプライベートウィンドウで行ってください。

WP-CLI が使える場合は、スラッグを指定して状態を調べられます。

wp post list --post_type=page,post --name=スラッグ --post_status=any --fields=ID,post_type,post_status,post_name,post_parent

2. URL とスラッグが合っているか確認する

ページの編集画面の右側(「ページ」の設定パネル)で、実際の URL(パーマリンク)を確認し、開こうとしている URL と1文字ずつ比べます。

よくある食い違い:

  • スラッグを変えた: スラッグを変えると URL も変わります。古い URL のリンクやブックマークは 404 になります。
  • 親ページを設定した・変えた: 固定ページに親を設定すると、URL は /親のスラッグ/子のスラッグ/ になります。親のスラッグを変えた場合も、子ページすべての URL が変わります。
  • 日本語のスラッグ: 日本語の題名から自動で作られたスラッグは、URL ではエンコードされた長い文字列になります。リンクをコピーしたときに途中で切れていないか確認します。

投稿(「投稿」の記事)は、公開後にスラッグを変えると古いスラッグが記録され、古い URL から新しい URL へ自動で転送されます。固定ページのような階層を持つ投稿タイプにはこの仕組みが無いため、固定ページのスラッグを変えたときは、古い URL からのリダイレクトを自分で設定する必要があります。

3. 同じ名前のフォルダーやファイルが無いか確認する

WordPress の標準の .htaccess は、URL と同じ名前のファイルやフォルダーが実際にサーバーにあると、WordPress を通さずにそれを返します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

!-f(ファイルが無いとき)と !-d(フォルダーが無いとき)だけが WordPress に渡されます。たとえば固定ページ /campaign/ を作ったのに、サーバーの WordPress のフォルダーに campaign という古いフォルダーが残っていると、そのフォルダーの中身(または 403・404)が返ります。FTP やファイルマネージャーで、ページのスラッグと同じ名前のフォルダーが無いかを確認し、不要なら名前を変えるか削除します。

Nginx の場合は、設定の try_files $uri $uri/ /index.php?$args; が同じ働きをします。.htaccess の基本は WordPressの.htaccessの設定 で説明しています。

4. パーマリンク(リライトルール)を作り直す

カスタム投稿タイプのページや、プラグインで追加したページだけが 404 になる場合は、WordPress が持っている URL の対応表(リライトルール)が古いままになっていることがあります。

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

WP-CLI では次のコマンドです。--hard を付けると、Apache の .htaccess も書き直します。

wp rewrite flush --hard

問題の URL がどのルールに当たっているかは、次のように確認できます。

wp rewrite list --match=/問題のURLのパス/

何も表示されない場合、その URL に当たるルールがありません。カスタム投稿タイプを登録しているプラグインやテーマが有効になっているか、投稿タイプのスラッグ(rewrite の slug)が URL と一致しているかを確認します。WP-CLI でのリライトの操作は WP-CLIでリライトルールを操作する方法 にまとめています。

5. リダイレクトやセキュリティのプラグインを確認する

次のようなプラグインは、特定の URL を転送したり、404 を返したりします。

  • リダイレクトを管理するプラグイン(転送先が存在しないページになっている)
  • セキュリティプラグイン(特定のパスへのアクセスを止めている)
  • 多言語化プラグイン(言語ごとの URL の設定)
  • 会員制・アクセス制限のプラグイン

リダイレクトのプラグインを使っている場合は、その一覧に問題の URL が登録されていないかを確認します。原因のプラグインが分からないときは、テスト環境で1つずつ無効化して確かめます。

6. キャッシュを消す

ページを公開する前にアクセスがあり、そのときの 404 がキャッシュに残っている場合があります。次の順にキャッシュを消してから、プライベートウィンドウで確認します。

  1. キャッシュプラグインのキャッシュ
  2. サーバーのキャッシュ(レンタルサーバーの管理画面の機能など)
  3. CDN のキャッシュ(Cloudflare などを使っている場合)

それでも直らないとき

サーバーのアクセスログで、問題の URL へのリクエストに何が返っているかを確認します。WordPress のページの 404 か、サーバーが直接返した 404 かで、見る場所が変わります。

  • WordPress のテーマの 404 ページが表示される: WordPress が URL を受け取ったうえで、該当するページを見つけられていません。手順 1・2・4・5 を確認します。
  • サーバーの簡素なエラーページが表示される: WordPress に届く前に止まっています。手順 3 と、サーバーの設定(.htaccess の別のルール、Nginx の設定)を確認します。

お気軽にご相談ください

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