この記事の趣旨はタイトルと以下の画像だけで全て完結しており、トラブル内容とその解決法が全て記されています。でもそれだけだったら納得いかない方(←自分のこと)のためにWordPressのこの手の問題がどうして発生するのかと解決に至った経緯を以下にメモります。
WordPressで404エラー
「死ぬかと思った!」。WordPressで多数のユーザーが利用しているサイト、または飯の種になるだけのPVを稼いでいるブログを運営しているなら、サーバートラブルは冷や汗ものです。
私もこれまで何度となくWordPressのトラブルに見舞われました。
メンテナンスに時間やエネルギーを奪われ疲弊することに懲りた私は、現在メンテナンスフリーでしかもWordPress専用サーバーなので高速な「wpXレンタルサーバー 」に乗り換えて快適なブログ生活を送っております。
関連高速!WordPress専用サーバー「wpXレンタルサーバー」「wpXクラウド」へ引越し前に確認したい疑問が解けた
関連 高速「wpXレンタルサーバー」のお申し込みからWordPressの引越し方法と手順とは?
しかし訳あって別のレンタルサーバ(ロリポップ)で超閉鎖的な会員制サイトをWordPressで構築していたところ、突然トラブルに見舞われました。トップページのみ表示されて個別記事は全て”404 ERROR FILE NOT FOUND”つまり「404エラーです。指定された(URL)は見つかりません。」の表示。冷や汗たらたら!
直前の作業は、すでのお分かりかもしれませんが、キャッシュ系プラグイン「W3 Total Cache」の不具合です。
「W3 Total Cache」が原因
この手のプラグインはWordPressの要となる wp-config.php や .htaccess を書き換えるので、設定のミスはサーバーエラーに直結します。それを知りながら、気軽に導入しようとした私が悪いのですが、とにかくエラーが発生してしまったわけです。
焦ってひとまず「W3 Total Cache」を停止してアンインストール。でもこの手のプラググインは残骸をかなり残して去っていくわけです。たちが悪いのは 大切なファイル である wp-config.php や .htaccess を元の記述に戻さずに去っていくこと。エラーが出て停止/アンインストールするわけですから当然そうなるんですけどね。
冷や汗を流しながら復旧するために、wp-config.php をFFFTPでダウンロードし、コードを確認してみると、やっぱり「W3 Total Cache」を有効にするコードが残っていました。
/** Enable W3 Total Cache */
define('WP_CACHE', true); // Added by W3 Total Cache
ひとまずこれを削除して、アップロード!と思ったら、550 FTPエラー表示。
550エラーって!フォルダが存在しないけど!という意味なんですが、書き換え禁止にしても出るんだった!と悟り、すぐに777じゃなて、600に変更すると「W3 Total Cache」の残骸を除いた wp-config.php を無事にアップロードできました。
しかし再び個別に記事にアクセスしても「404エラーです。指定された(URL)は見つかりません。」げな!
残る問題はキャッシュ系プラグインが勝手に変更する .htaccess ファイルです。これをダウンロードしてみると、なんと真っ白。WordPress はPHPで動的にファイルを生成するのでリライトルールが.htaccessに書いてないと話にならん。ということで、お決まりの以下のコードを記述して、アップロード!
# BEGIN WordPress
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond
%{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
< /IfModule>
# END WordPress
気を取り直して、再度 個別記事にアクセス!でも再び「404エラーです。指定された(URL)は見つかりません。」げな!
パーマリンクの「変更を保存」だけでエラー解決!
パニクりながらググると「404エラー」はパーマリンクの設定エラーでもあるとの記述を発見。「そりゃそうだけど」と思いながら、最後の手段として、パーマリンクの設定画面から、変更せずに「更新を保存」をクリック。
ダメ元で再び記事を表示。見事復活!個別記事が表示されるようになりました。
どこが間違っていたのかと新しく生成された .htaccess ファイルを調べてみると、WordPressをインストールしていた下層フォルダがしっかり記述されていました。
「ドメインのトップフォルダにWordPressがインストールされていないなら、しっかりそこまでのURLを記述しなけりゃならない、これって常識!なんて聞いていないよ!!」と言っても当然誰も受け付けてくれない!(アホ!のコメントをもらえそう!)
完全閉鎖的な会員制サイトを作ろうと思い、深いフォルダにWordPressのURLを設定したのが”あだ”になりました。
ひとまず解決したので、めでたしとしたいですが、この記事で言いたかったことは、タイトル通り、WordPressで記事のみ404エラーが発生するトラブルを超簡単に解決する方法はパーマリンクの「更新を保存」するだけでいいかもよ!ということです。(これだけを言いたいがためにすでに、この時点で1500文字となっています。)
WordPressでブログやサイトを構築している私が学んだ教訓は、「W3 Total Cache などのキャッシュ系プラグインの扱いは慎重に!間違っても初めから本番サイトで試すな!」です。でも、環境が微妙に違うことが多いテストサイトで試したことが本番サイトで上手くいかないのがキャッシュ系プラグインなんだよなァ~!(←ぼやき)
今から再度「W3 Total Cache」の導入をやり直します。「急げ!ユーザーは待ってくれないぞ!」(と思いつつ、この記事は1750文字を突破!)
コメント
助かりました!!!ありがとうございます!!
WP4.2.1jaから4.2.2jaにupdateしたら固定ページが全部404エラーになり、ググってここにたどり着きました。パーマリンク設定のボタンを押すだけで解決しました!なんだったんだぁあああああ
因みに固定ページだけで構成しているサイトで記事は作っていませんでした。
ありがとうございました!
解決しました!ありがとうございました!
会員制のサイトを作っていて404エラーの問合せが続いて困っていました。本当に助かりました。ありがとうございます。
404エラーが出続けて困り果てていましたがパーマリンクの更新だけで復旧するとは。。。ほんっとにありがとーございましたヽ(*´∀`)ノ
サーバー移転の後、404エラーが全記事に出て半日困り果てていました。ググってここにたどり着き、
パーマリンク更新で解決しました! ありがとうございました。