2024年12月27日
2024年12月27日
WordPressの定番トラブルと対処法:500エラー・404・表示崩れ・メンテナンス表示
WordPressを運営していると、ある日突然ページが表示されなくなったり、レイアウトが崩れたりすることがあります。この記事では、相談の多い4つのトラブルについて、原因の見分け方と、自分で試せる対処の順番をまとめます。
作業の前に、サイトのファイルとデータベースのバックアップを取ってください。レンタルサーバーの自動バックアップがある場合は、復元できる日付を確認しておくと安心です。
500エラー・「このサイトで重大なエラーが発生しました」
どんな表示になるか
- 「このサイトで重大なエラーが発生しました。」と表示される(WordPressがPHPの致命的なエラーを検知したときの画面)
- Google Chromeで「このページは動作していません」「HTTP ERROR 500」と表示される
- 「500 Internal Server Error」と表示される
いずれも、サーバーがページを作る途中でエラーになった状態です。サーバーが止まっているとは限りません。多くは、プラグインやテーマのPHPのエラー、.htaccess の書き間違い、メモリ不足、PHPのバージョンとの非互換が原因です。
原因を調べる順番
1. 管理者宛てのメールを確認する
WordPressは致命的なエラーを検知すると、サイトの管理者メールアドレスに「リカバリーモード」のリンク付きのメールを送ります。メールには、エラーの原因になったプラグインやテーマの名前が書かれていることがあります。リンクからログインすると、そのプラグインを停止した状態で管理画面に入れます。
2. 直前に何をしたかを思い出す
プラグインやテーマの更新・追加、functions.php の編集、PHPバージョンの変更の直後に起きた場合は、それが原因の候補です。元に戻すと直ることが多くあります。
3. エラーログを見る
レンタルサーバーの管理画面にある「エラーログ」で、エラーの内容(PHP Fatal error の行とファイル名)を確認します。サーバーのログが見られない場合は、wp-config.php にある define( 'WP_DEBUG', false ); の行を次の3行に置き換えると、WordPress側でログを残せます(「編集が必要なのはここまでです」という行より上に書きます。同じ定数を2回書くと警告が出るため、元の行は残さないでください)。
<?php
// wp-config.php(一時的に追加し、原因が分かったら元に戻す)
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // wp-content/debug.log に記録する
define( 'WP_DEBUG_DISPLAY', false ); // 画面にはエラーを表示しない
ファイル名に wp-content/plugins/プラグイン名/ が含まれていればそのプラグイン、wp-content/themes/テーマ名/ ならそのテーマが原因です。Allowed memory size of … bytes exhausted と出ている場合はメモリ不足です。調べ終わったら、これらの設定は削除するか false に戻してください。debug.log には内部の情報が残るため、確認後は削除します。
管理画面に入れないときの対処
管理画面にも入れない場合は、FTPやレンタルサーバーのファイルマネージャーで次の操作をします。
| 試すこと | 操作 | 元に戻し方 |
|---|---|---|
| プラグインを疑う | wp-content/plugins フォルダーの名前を plugins_off などに変える(全プラグインが停止する) |
名前を戻し、管理画面のプラグイン一覧から1つずつ有効化して原因を探す |
| テーマを疑う | wp-content/themes 内の使用中テーマのフォルダー名を変える |
WordPress同梱のデフォルトテーマ(Twenty Twenty-Five など)がインストールされていれば、そのテーマで表示される。原因を直してから名前を戻し、テーマを有効化し直す |
.htaccess を疑う |
サイトのフォルダーにある .htaccess を .htaccess_old に変える |
管理画面の「設定」→「パーマリンク」で何も変えずに「変更を保存」すると、WordPressの部分が作り直される |
テーマのフォルダー名を変える方法は、デフォルトテーマが削除されていると使えません。また、.htaccess にWordPress以外の設定(リダイレクトやアクセス制限など)を書いていた場合は、作り直した後に .htaccess_old から必要な部分を書き戻してください。
PHPのバージョンを上げた直後に起きた場合は、レンタルサーバーの管理画面でPHPのバージョンを一時的に戻すと表示が回復することがあります。その後、プラグインとテーマを新しいPHPに対応した版へ更新してから、改めてバージョンを上げます。
404 Not Found・「ページが見つかりません」
404は「そのURLにページがない」という応答です。どのページで起きているかで原因が分かれます。
特定のページだけ404になる
- URLが違う: 管理画面の「投稿」または「固定ページ」の一覧で対象を開き、パーマリンク(URL)を確認します。スラッグ(URLの末尾)を変えると、古いURLは404になることがあります。
- 公開状態が違う: 下書き・非公開・予約投稿の記事は、ログインしていない訪問者には表示されません。
- ゴミ箱に入っている: 「投稿」→「ゴミ箱」にあれば、復元すると表示されます。
スラッグを変えた記事に、外部サイトや検索結果から古いURLで来る人がいる場合は、古いURLから新しいURLへのリダイレクトを設定します。
トップページ以外がすべて404になる
パーマリンクの書き換えルールが働いていない状態です。次の順で確認します。
確認1: パーマリンクを保存し直す
管理画面の「設定」→「パーマリンク」を開き、何も変えずに「変更を保存」を押します。これでWordPressの書き換えルールが更新されます。
確認2: .htaccess の内容(Apache)
Apacheの場合は、サイトのフォルダーの .htaccess に次のWordPressの部分があるかを確認します(WordPressを / 以外のフォルダーに置いている場合、RewriteBase と最後の行のパスは異なります)。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
確認3: サーバー設定(Nginx)
Nginxの場合は .htaccess が使われません。サーバー設定の location / に次の指定があるかを確認します。
location / {
try_files $uri $uri/ /index.php?$args;
}
サーバー移転やドメイン変更の直後に起きた場合は、「設定」→「一般」の「WordPress アドレス (URL)」と「サイトアドレス (URL)」が新しいURLになっているかも確認してください。
ページのレイアウトが崩れた
CSSやJavaScriptが読み込まれていない、または古いものが表示されているときに起きます。次の順で切り分けます。
- ブラウザのキャッシュを外して再読み込みする: Windowsは
Ctrl+F5、MacはCommand+Shift+Rで再読み込みします。別のブラウザやスマートフォンで見て、同じように崩れるかも確認します。 - キャッシュ系プラグイン・CDNのキャッシュを削除する: キャッシュプラグインやCloudflareなどを使っている場合は、それぞれの管理画面でキャッシュを削除します。CSSやJavaScriptの「圧縮」「結合」の設定を有効にした直後なら、いったん無効にして表示を確かめます。
- プラグインの競合を調べる: 直前に更新したプラグインを停止して表示を確かめます。公開中のサイトで停止したくない場合は、公式プラグイン「Health Check & Troubleshooting」のトラブルシューティングモードを使うと、ログインしている自分にだけ、プラグインを停止しデフォルトテーマに切り替えた状態を表示できます。
- テーマの更新で編集内容が消えていないか確認する: 配布テーマのファイルを直接編集していた場合、テーマを更新すると編集内容は上書きされます。カスタマイズは子テーマか「追加CSS」に書くようにします。
- 混在コンテンツを確認する: サイトをHTTPS化した後に崩れた場合、CSSなどが
http://のURLで読み込まれ、ブラウザにブロックされていることがあります。ブラウザの開発者ツールのコンソールに「Mixed Content」のエラーが出ていないかを確認します。
「ツール」→「サイトヘルス」には、PHPのバージョンや、使っていないテーマ・プラグインの更新状況などの改善点が表示されます。表示崩れの直接の原因が分からないときも、一度確認しておくと手掛かりになります。
「現在メンテナンス中のため、しばらくの間ご利用いただけません。」が消えない
WordPressは本体・プラグイン・テーマの更新中、サイトのフォルダーに .maintenance というファイルを置き、このメッセージを表示します。通常は更新が終わると削除されますが、更新が途中で止まるとファイルが残り、表示が消えなくなります。
- 数分待っても消えない場合は、FTPやファイルマネージャーでサイトのフォルダー(
wp-config.phpと同じ場所)を開きます。 .maintenanceを削除します(ドットで始まるファイルは、隠しファイルを表示する設定にしないと見えないことがあります)。- 管理画面の「ダッシュボード」→「更新」を開き、途中で止まった更新をやり直します。
更新が途中で止まったプラグインは、ファイルが一部しか置き換わっていないことがあります。表示が戻った後に、そのプラグインの更新をもう一度実行してください。
自分で直せないときは
ここまでの手順で直らない場合や、ファイルの編集に不安がある場合は、無理に操作を続けず、レンタルサーバーのサポートや制作会社に相談してください。相談するときは、表示されたメッセージ、起きた日時、直前に行った操作、エラーログの内容を伝えると、原因を特定しやすくなります。ワードプレス博士でもご相談を受け付けています。
まとめ
- 500エラーや「重大なエラー」は、多くがプラグイン・テーマのPHPエラー。管理者宛てのメールとエラーログで原因を特定し、フォルダー名の変更で切り分ける
- 一部のページだけの404はURL・公開状態を、トップページ以外がすべて404なら「パーマリンク」の再保存と
.htaccess(Nginxはtry_files)を確認する - レイアウト崩れは、ブラウザ・プラグイン・CDNのキャッシュ、プラグインの競合、テーマ更新による上書き、混在コンテンツの順に調べる
- メンテナンス表示が消えないときは
.maintenanceを削除し、止まった更新をやり直す - どの作業も、始める前にバックアップを取る