WordPressで、トップページや投稿一覧は正常に表示されるのに固定ページだけが404エラーになってしまうことがあります。この記事では、その対処法と、対処の過程で今度は500エラーになってしまった場合の原因・対処法もあわせて解説します。
固定ページだけ404エラーになる場合の対処法
投稿やカテゴリーは表示されるのに固定ページだけ404になる場合、多くは.htaccessのリライトルールが正しく機能していないことが原因です。パーマリンク設定を保存し直すことで再生成できます。
これだけで.htaccessのリライトルールが再生成され、直ることがあります。
WordPressをディレクトリ直下にインストールしている場合、.htaccessは以下のような内容になっているのが正しい状態です。
手順1・2は、実はこの記事の中で一番大事なところです。「そんな単純なことで直るの?」と思うかもしれませんが、パーマリンク設定を保存し直すだけで.htaccessのリライトルールがWordPress側から正しく再書き込みされるため、意外とこれだけで直ってしまうケースが多いです。まずは.htaccessを直接いじる前に、この方法から試してみてください。
# 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この内容と大きく違っていたり、この部分自体が存在しない場合は、手動で書き足すか、上記の内容に書き換えてみてください(編集前に必ずバックアップを取りましょう)。
対処の過程で500エラーになってしまった場合
上記の対処をした後に、今度は500エラー(Internal Server Error)が出てしまうことがあります。主な原因は次の2つです。
1. .htaccessの記述ミス
手動で編集した際に、閉じタグの書き忘れなど構文エラーがあると500エラーになります。上記のコードと見比べて、記述にミスがないか確認しましょう。
2. サーバーのPHPバージョンと固定ページ内のコードが合っていない
固定ページ内にPHPコードを直接書いているようなケースで、サーバー側のPHPバージョンとコードの書き方が合っていないと500エラーになることがあります。
私の場合、クライアント様のサーバーでPHPのバージョンを上げられない状況での作業中に、配列を[](短縮構文)で書いていたことが原因で500エラーになったことがありました。配列の短縮構文[]はPHP 5.4以降でないと使えないため、それより古いバージョンのサーバーでは構文エラーになってしまいます。array()という書き方に直したところ、無事にページが表示されるようになりました。
2026年現在はPHP 7.4以降が推奨されており、この短縮構文自体が原因になるケースは減っていますが、逆に古いプラグイン・テーマの記述がPHP 8系の新しい仕様に対応できておらず500エラーになるケースが増えています。サーバーのPHPバージョンを上げた直後にエラーが出た場合は、まず直前に更新したプラグイン・テーマを1つずつ無効化して原因を切り分けるのがおすすめです。
まとめ
- 固定ページだけ404になる場合は、パーマリンク設定を保存し直すだけで直ることが多い
- 直らない場合は
.htaccessのリライトルールを確認・修正する(編集前は必ずバックアップ) - その後500エラーになったら、
.htaccessの記述ミスか、PHPバージョンとコードの不一致を疑う - PHPバージョン変更後のエラーは、プラグイン・テーマを1つずつ無効化して原因を切り分けるのが確実