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 がキャッシュに残っている場合があります。次の順にキャッシュを消してから、プライベートウィンドウで確認します。
- キャッシュプラグインのキャッシュ
- サーバーのキャッシュ(レンタルサーバーの管理画面の機能など)
- CDN のキャッシュ(Cloudflare などを使っている場合)
それでも直らないとき
サーバーのアクセスログで、問題の URL へのリクエストに何が返っているかを確認します。WordPress のページの 404 か、サーバーが直接返した 404 かで、見る場所が変わります。
- WordPress のテーマの 404 ページが表示される: WordPress が URL を受け取ったうえで、該当するページを見つけられていません。手順 1・2・4・5 を確認します。
- サーバーの簡素なエラーページが表示される: WordPress に届く前に止まっています。手順 3 と、サーバーの設定(
.htaccessの別のルール、Nginx の設定)を確認します。