WordPressにてトップページは問題無く表示されるけど、トップページ以外のページが表示されずに、404エラーとなってしまう場合があります。
主な発生条件としてはこんな感じ。
- WordPressを引っ越しした(テスト環境から本番環境に移したなど)
- パーマリンクを変更した
- .htaccessファイルを変更した時
上記以外にも原因となることもあるかもしれませんが、ひとまず多いのはこのあたりです。
トップページ以外が全く表示されず焦ってしまって、色んな所をいじくり回して後戻りできなくなる。。。なんてことにならないように、まずは下で書いた項目を確認してみてください。
パーマリンク設定を更新する
まず最初に疑うべき内容はこれ。「パーマリンク」です。
管理画面の【設定 > パーマリンク設定】のページを開き、何も変更せずに「変更を保存」ボタンを押します。
これによりURL関連の設定が再構築され404エラーが解消される場合がほとんどです。
ほとんどの事例でパーマリンク設定を更新することで解消されるので、トップページ以外が表示されない場合は、まず最初に疑うべき項目です。
実際に行う作業も単純で簡単ですので。大半はこの作業で解決する場合が多いかと思います。
カスタムパーマリンクにて「category/」を削除している場合は注意
パーマリンク構造を変更することはとても難しいです。
例えば、/%category%/%postname%などのパーマリンク構造にしていて、かつプラグインやカスタマイズなどで、URLから/category/というURLを削除していた場合。
上記の場合はWordPress側でバグが発生するようで、カテゴリー一覧ページにて2ページ目以降が404エラーとなり表示されなくなるようです。
2ページ目以降は、URLに http:/ /[カテゴリーページのURL]/page/2というように、URLが追加されますが、/category/を削除していた場合、2ページ目以降のURL構造がうまく働かず、動作しなくなるようです。
.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内に上記コードが入っていない場合は、それが原因となり不具合を起こしている可能性がありますので、上記のように変更してみてください。