WordPressで404が出た時に確認すべきこと

記事
IT・テクノロジー
WordPressでページが404になる原因は、単純な設定ミスから構造的な問題まで幅広く存在します。
「なんとなく触ってたら直る」ではなく、原因を切り分けて潰すことが重要です。

ここでは、実務で優先度が高い順に確認すべきポイントを整理します。

パーマリンク設定を更新する

まず最初にやるべきはこれです。
ほぼこれで直るケースも多い。

管理画面の「設定 → パーマリンク」に入り、何も変更せず「変更を保存」を押します。

これにより .htaccess が再生成され、URLのルーティングが正常に戻ることがあります。

.htaccess の内容を確認する

Apache環境の場合、.htaccess が壊れていると確実に404になります。

最低限必要な記述は以下です。

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

これがない、もしくは書き換えられているなら原因はここです。

投稿・固定ページのスラッグを確認する

URLとスラッグがズレているケースはかなり多いです。

例えば
/about/ にアクセスしているのに
実際のスラッグが about-us になっている

この場合は当然404になります。

カスタム投稿タイプの設定ミス

開発している場合、ここが原因の可能性が高いです。

特に以下は要チェックです。

rewrite の設定が間違っている

has_archive が false になっている

register_post_type 実行後にパーマリンク更新していない

コードを変えたあとにパーマリンク更新していないなら、それはミスです。

テンプレートファイルの配置ミス

WordPressはテンプレート階層に従って表示します。

例えば

single.php

page.php

archive.php

single-{post_type}.php

これらが正しく存在していないと、意図しない挙動や404になることがあります。

特にカスタム投稿タイプでは
single-{post_type}.php が無い問題は頻出です。

クエリを書き換えている場合

pre_get_posts や WP_Query を使っている場合、条件ミスで404になります。

例えば

is_main_query() を見ていない

is_admin() を無視している

条件分岐がズレている

これは「見た目は合ってるのに404」の典型です。

サーバー設定の問題

ローカルでは動くのに本番で404になるなら、ほぼここです。

チェックポイントは以下。

mod_rewrite が有効か

.htaccess が読み込まれているか

Nginx の場合は rewrite 設定があるか

ここを見ないのは甘いです。

キャッシュの影響

意外と見落とされがちですが、キャッシュで古い状態が残っていることがあります。

ブラウザキャッシュ

WordPressのキャッシュプラグイン

サーバーキャッシュ(Xserverなど)

全部疑ってください。

URLの打ち間違い

一番基本ですが、意外とこれです。

全角スラッシュになっている

末尾スラッシュの有無

http / https の違い

「そんなわけない」と思うところほどミスります。

まとめ

404は「どこか1つが間違っている」のではなく
「複数の設定が噛み合っていない」ことで起きることが多いです。

だからこそ

パーマリンク

.htaccess

スラッグ

カスタム投稿

サーバー設定

この順で、機械的に潰していくのが正解です。

感覚で直そうとすると時間を無駄にします。
順序立てて切り分けることが、最短ルートです。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら