初級者~中級者向け

【困惑】トップは表示されるのに個別ページが「404 Not Found」

文中の説明画像をクリックすると拡大します。

LINEで送る
Pocket

この記事は約6分で読めます。

WordPressサイトがトップページ以外表示されなくなってしまった

WordPressでWebサイトを運営中に、トップページ以外のページが表示されなくなることがたまにあります。

管理画面にも入れるし、トップページも表示される。でも他のページが全く表示されなくなってしまった。

このように、期待したページが表示されなくなる理由として、いくつかの原因が考えられます。

ここでは、トップページ以外が表示されなくなる原因と対策方法について見ていきましょう。

ページが見つからない「404 Not Found」とは

存在しないページにアクセスした時に表示されるページが、通称「404 Not Found」というページです。

「404」とは、サーバーからクライアントに送信されるステータスコードと呼ばれるもので、ステータスコードにはいくつかの種類があります。

【300番台】
ページが移転した時に使われる

【400番台】
クライアントによるエラー(存在しないページへのアクセス、アクセス権限のないページへのアクセス)

【500番台】
サーバーエラー(プログラムがバグってるなど)

ページが見つからないというのは、クライアントつまりブラウザが、サーバーには存在しないページにアクセスした時に発生する現象です。

これは、クライアントのエラーに分類されています。

なお、正常にページが表示された場合のステータスコードは「200 OK」が送信されます。

WordPressのページが表示されなくなる原因

WordPressにおいてこのようなエラーが発生する原因として、主に以下の4つの理由があげられます。

  • WordPressのパーマリンク設定を変更したとき
  • WordPressの引越しをしたとき
  • 「.htaccess」ファイルを手動で変更した時
  • WordPressのファイルを削除した時

このような操作をした際に、WordPressの設定や構成が変わってしまったため、ページが見つからなくなることがあります。

特に、ページが表示されなくなった時に最も怪しいのが「.htaccess」ファイルの中身です。

WordPressがページを表示させる仕組みと最も関係があるのが、「.htaccess」ファイルの設定です。

WordPressがページを表示させる仕組み

WordPressは、動的にページを表示させる仕組みを持つシステムです。

「動的にページを表示させる」とは、どういうことでしょうか。

例えば、WordPressで作られたWebサイトのある記事のURLが、以下のようだったとします。

「https://example.com/2019/01/03/112233」

静的なWebサイトでは、ドメインの直下に「2019」「01」「03」「112233」のようなフォルダ構造を持ち、最後の「112233」フォルダにindex.htmlが存在していれば、上記のURLにアクセスした時にページが正常に表示されます。

しかし、WordPressは動的にページを表示させる仕組みを持っています。

つまり、実際にサーバー上に「2019」「01」「03」「112233」のようなフォルダ構造やindex.htmlファイルが存在しなくても、指定されたパーマリンクに応じて記事を表示させることができます。

もしこれが静的なWebサイトなら、実際にそこにファイルがないため、404 Not Foundになってしまいます。

WordPressが持つ動的なページを表示させる仕組みを支えているのが、Webサーバーの機能の一つである

mod_rewrite」です。

この「mod_rewrite」の設定が記述されているのが、「.htaccess」ファイルです。

つまり、ページが表示されないということは、「mod_rewrite」の設定が記述されている「.htaccess」ファイルが怪しい、ということになります。

パーマリンク設定の空更新(何もしないで更新)を試す

「mod_rewrite」の設定は特殊な文法で記述されているので、手動で設定するのは非常に難しいです。しかし、WordPressには「.htaccess」ファイルを自動で生成する機能が備わっています。

これは、管理画面のパーマリンク設定を更新することで実行できます。

まず、WordPressの管理画面にログインしてパーマリンク設定を開きましょう。

パーマリンク設定の画面が開いたら、「共通設定」は変更せずに「変更を保存」ボタンをクリックします。(このような作業を「空更新」と言います)

そうすると、WordPressのトップページのあるフォルダに「.htaccess」ファイルが自動生成されます。

作成される「.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

この「.htaccess」ファイルには、Webサーバーの機能である「mod_rewrite」という機能に関する設定が記述されています。

この記述を大まかに説明すると、サーバー上に存在しないファイルやフォルダにブラウザでアクセスしたら、index.phpを参照する、といった内容です。

ここまでの作業をしてみて、トップページ以外のページが表示されるようになったら、問題は解決です。

 

まとめ

  • WordPressのトップページ以外が表示されなくなったら、「.htaccess」ファイルの設定を確認する。
  • パーマリンク設定の空更新で、「.htaccess」ファイルは自動生成できる。
  • WordPressは動的なシステムなので、実際にはサーバー上に存在しないページへのアクセスも処理できる。
LINEで送る
Pocket