【WordPress】記事が消えた?!トップページしか表示されなくなった時の対処法

この記事の前提条件

対象: WordPress(Apache系サーバー)
難易度: ★★☆
所要時間: 約5分

サーチコンソールで重複コンテンツがあると指摘されたので、サーバー内の対象ファイルを削除しました。その時点ではトップページが表示されていたので「無事に整理できた」と思っていたのですが、しばらくしてサイト内の記事を開いてみると、なんと全部の記事で「404 Not Found」が出ていました。

「やっちまったなぁ」となりましたが、前日の作業で何を消したか、今回の症状の原因は何かを調べて、なんとか無事に直すことができました。今回は「WordPressでトップページしか表示されなくなった時の対処法」をご紹介します。

ページが表示されなかった原因

調べたところ、この症状が起こるタイミングは下記のようなことが要因で、パーマリンクの設定がサーバーに反映されていないことが原因でした。

  • WordPressの引っ越しをした
  • パーマリンクを変更した
  • WordPress内のファイルを削除した
  • .htaccessファイルを変更した

今回はサーバーのファイルを整理していたので「.htaccessが怪しいな」と思って確認したところ、予想通りそこにいませんでした。ファイル整理の際に、一緒に消してしまっていたようです。

解決方法

.htaccessに心当たりがない場合は、WordPress管理画面の【設定】→【パーマリンク設定】から、設定を一度「基本」に戻して保存し直してみましょう。それだけで.htaccessが再生成され、直ることがあります。

今回の私のようにファイル自体を消してしまった場合は、.htaccessを新しく作り直す必要があります。

.htaccessを作成する

テキストエディタで下記のコードを記載します。保存時の拡張子は.txtではなく.htaccessにします。

⚠️ ファイル名の付け方に注意

OSによっては「.htaccess」というファイル名(拡張子だけでファイル名がない状態)を直接付けられないことがあります。その場合は一旦「●●.htaccess」のような仮の名前で保存し、あとでファイル名部分を削除して「.htaccess」だけの名前に変更しましょう。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

サーバーにアップロードする

先ほど作ったファイルを、ドメイン直下のフォルダにアップロードします。アップロードしたら、ファイル名を「 .htaccess 」に変更します。

サーバーのドメイン直下フォルダに.htaccessファイルをアップロードした状態

これで完了です。「404 Not Found」となっていた記事が復活しました。

💡 実務での教訓

.htaccessはファイル名が「.」から始まるため、OSやFTPソフトの設定によっては隠しファイル扱いになり、一覧に表示されないまま誤って範囲選択・削除してしまうことがあります。サーバー整理でファイルをまとめて削除する前には、隠しファイルの表示設定を必ずオンにしておく、可能であればBackWPupなどで事前にバックアップを取っておく、といった予防策がおすすめです。

まとめ

  • トップページ以外が404になる原因の多くは、パーマリンク設定がサーバーに反映されていないこと
  • まずは【設定】→【パーマリンク設定】を保存し直すだけで直ることが多い
  • 直らない・.htaccess自体が消えている場合は、内容を作り直してドメイン直下にアップロードする
  • .htaccessは隠しファイル扱いになりやすいので、サーバー整理の際は表示設定とバックアップを忘れずに