【WordPress】プラグインを使わずにメンテナンスモードを表示させる方法

Webサイトのメンテナンスモードとは、WordPressやそれに関連するプログラムの更新やサイトのメンテナンスを行う際に「メンテナンス中」などと表示をさせて一時的に非公開にする機能です。

これにより、訪問者がWebサイトがメンテナンス中であることがわかるとともに、作業中のエラーを見せることなくメンテナンスを行うことができます。

maintenance mode

メンテナンスモードには「WordPressデフォルトのメンテナンスモード」と「管理者の意思で行うメンテナンスモード」があります。

デフォルトのメンテナンスモードは、WordPressやそれに関連するプログラム(テーマやプラグインなど)の更新などの際に自動で表示されるもので、管理者が行うメンテナンスでは使うことができません。

したがって、サイトのデザイン変更などで管理者が行うメンテナンスの際には、プラグインを利用するか独自にWordPressをカスタマイズする必要があります。

独自にカスタマイズするのは難しいと思いがちですが、この記事の手順通りに進めて行けば誰にでも簡単にメンテナンスモードを表示させることができます。

なお、今回解説する方法は「メンテナンスモード」の表示を自由にカスタマイズすることができるうえに、何度でも使い回しすることができるため、必要な時にいつでも再利用できる便利な方法です。

メンテナンスモード作成の概略

  • 外部からのアクセスに対しては「メンテナンスモード」を表示し、メンテナンスを行うPCではIPアドレスの識別によってWordPressにフルアクセスできるようにするためのコードを .htaccess に追記します。
  • 外部からのアクセス、訪問者のブラウザに表示させるための「maintenanceファイル」を作成しWordPressにアップロードします。

それでは、プラグインを使わずに「メンテナンスモード」を表示する方法を順を追って解説します。

1. 「.htaccessファイル」をバックアップ

.htaccess はとても大事なファイルで、記述間違いをするとWordPressにログインできなくなるなど、うまく動作しなくなるため、編集する前は必ずバックアップを取っておきます。

また、バックアップファイルはメンテナンス解除の際にも必要となりますので、元ファイルと編集用ファイルの2つを用意しておきます。

「.htaccessファイル」の場所と保存

「.htaccessファイル」は基本的に、WordPressをインストールしたディレクトリ直下(wp-adminやwp-contentディレクトリと同じ階層)に配置されています。

上級者ならFileZillaなどの「FTPクライアントソフト」を使用するところでしょうが、初心者のためにWindows PCに標準搭載されているものだけを使ってダウンロードする方法を解説します。

XServerの場合は「サーバーパネル」または「ファイルマネージャ」から「.htaccess ファイル」にアクセスすることができます。(XServer 以外のサーバーでもWordPressの構造は同じですので、この記事を参考にしてファイルの場所を探してください)

サーバーパネルから開く方法

サーバーパネル>ホームページと進むと「.htaccess編集」という項目がありますので、右端の編集(ペンマーク)をクリックして「.htaccessファイル」を開きます。

Server Panel

サーバーパネル

.htaccess file editing screen

.htaccessファイル編集画面

この編集画面では .htaccess を直接書き換えることができますので、慎重にコードをコピーし「メモ帳」(Windows PCに標準搭載)にコピーして御自身のPCに保存します。

ファイルマネージャから開く方法

ファイルマネージャ>メンテナンスモードを設定するドメイン>public_htmlと進むとその中に「.htaccessファイル」があります。

Download .htaccess file

この画面からファイルをクリックしても開きませんので、「.htaccessファイル」を選択したうえで画面上部の「ダウンロード」をクリックして御自身のPCにダウンロードします。

ダウンロードしたファイルは「メモ帳」で開くことができます。

2.  IPアドレスを確認

メンテナンス作業を行うPCは、IPアドレスの選別によってWordPressにフルアクセスできるように設定しますので、IPアドレスを調べてメモに取っておきます。

以下のURLをクリックすると使用中のIPアドレスが確認できます。

アクセス情報【使用中のIPアドレス確認】
あなたのアクセスしているIPアドレス情報などをENVとJavaScriptで取得し表示します。あなたのIPアドレスからポート疎通・ping疎通・DNS索引・WHOIS情報も取得できます。

3.  メンテナンス用ファイルの事前作成

メンテナンスモードを表示させるために以下のファイルを事前に作成しておきます。

  • .htaccess ファイル:WordPressにアクセス制限(コントロール)をかけるためのファイル
  • maintenance ファイル:「メンテナンス中」など外部からのアクセスの際に表示させるためのファイル

「.htaccessファイル」の作成

「メモ帳」で .htaccessのバックアップファイルを開き以下のコードを最上部に追記します。

#メンテナンスモード(エラー503)
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^maintenance/ - [L]
RewriteCond %{REMOTE_ADDR} !=XXX.XXX.XXX.XXX
RewriteRule ^.*$ maintenance/index.php
</IfModule>
Add the code
【注意点】
元のバックアップファイルはメンテナンス解除に使用しますので、コードを追記したファイルは別名で保存しておきます。
【コードの解説】

ErrorDocument 503 /maintenance.html は、ウェブサーバーの設定で、「503 Service Unavailable」エラーが発生した場合に /maintenance.html というページを表示するという指示です。これは主にサーバーが一時的に利用できない状態(メンテナンス中など)にあることをユーザーに伝える目的で使われます。

「RewriteCond %{REMOTE_ADDR} !=XXX.XXX.XXX.XXX」は、指定されたIPアドレス「XXX.XXX.XXX.XXX」以外からのアクセスに対してのみ、次のRewriteRuleの条件を適用するという意味です。Apacheのmod_rewriteモジュールで使われる、リダイレクトなどのルールを記述する際の条件の一つで、特定のIPアドレスからのアクセスを例外的に許可する際に使用します。

要するに外部からのアクセスに対しては「メンテナンスモード」を表示させ、特定のIPアドレスからのアクセスだけWordPressにフルアクセスできるようにするコードです。

「maintenanceファイル」の作成

ローカル環境(御自身のPC内)で「maintenance」というフォルダーを新しく作り、その中に「index.php」というPHPファイルと「maintenance.html」というHTMLファイルを作ります。

Maintenance File

「index.php」の作成

この「index.php」は外部からのアクセスがあった際、一時的なエラーとしたうえで「maintenance.html」を読み込ませるためのコードを記述します。

「メモ帳」を開き以下のコードをコピーし「index.php」と名前を付けて保存します。

<index.php>

<?php 
header('HTTP/1.0 503 Service Temporarily Unavailable'); 
include(dirname(__FILE__) . '/maintenance.html' ); 
?>
【コードの解説】

header(‘HTTP/1.0 503 Service Temporarily Unavailable’); は、Webサーバーが 一時的にサービスを提供できない状態であることを示すHTTPステータスコード「503 Service Unavailable」をクライアント(ブラウザなど)に送信するための命令です。

include(dirname(__FILE__) . ‘/maintenance.html’ );は、PHPにおいて、現在実行されているPHPファイルが存在するディレクトリにあるmaintenance.htmlというファイルを読み込んで、現在のスクリプトに組み込むためのコードです。

「maintenance.html 」の作成

この「maintenance.html」 は外部からのアクセスの際(訪問者のブラウザ)に表示させるページです。WordPressの記事と同様にマークアップ言語であるHTMLですので、文字や画像など自分の思いどおりのページを作ることができます。

【注意点】
.htaccess の記述で503エラーとしていますので、CSSはインラインスタイルまたは「maintenanceファイル」の中にCSSファイルを作る必要があります。
また、画像もすでにアップロードしているものを読み込むことができませんので、これもCSSと同様に「maintenanceファイル」の中に別途作る必要があります。
詳細は当サイトの記事「HTML&CSS|ファイルの種類と保存場所」が参考になると思います。

オリジナルのメンテナンスモードを拘って作り込みたい場合は当サイトの「プログラミング学習」を参考にしてください。順を追ってHTMLとCSSを解説していますのでWebサイト制作の役に立つと思います。

今回はプログラミングの解説を簡略化するため、以下の表示になるような例で解説します。

Announcement mode under construction

このHTMLファイルも「index.php」 と同様に、「メモ帳」を開き以下のコードをコピーし「maintenance.html」と名前を付けて保存します。

<maintenance.html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>ただいまメンテナンス中</title> 
    <style> 
        .main {
        margin: 75px auto; 
        max-width: 750px; width: 90%;
        } 
        .main h1 { 
        border-bottom: 1px solid #999; 
        padding: 0 0 15px; color: #666; 
        font-size: 329%; 
        } 
        .main p { 
        font-size: 202%; 
        } 
    </style> 
</head> 
<body> 
    <div class="main"> 
    <h1>当サイトはただいま製作中です</h1> 
    <p>公開は2024年の12月頃を予定しています</p> 
    </div> 
</body> 
</html>

この記述の中で<h1>タグ内の文字列「当サイトはただいま製作中です」を書き替えると上部に表示されている文字を変更することができます。また、<P>タグ内の文字列「公開は2025年の12月頃を予定しています」を書き替えると下部の説明文を変更することができます。

例)表題文字の入れ替え

<h1>当サイトはただいま製作中です</h1>

<h1>ただいまメンテナンス中です</h1>

例)説明文の入れ替え
<p>公開は2024年の12月頃を予定しています</p>

<p>大変恐縮ですが、しばらくお待ちください</p>

「<h1></h1>」「<p></p>」というタグ(記号)はそのままにして文字列だけを下記のように書き替えます。すると書き替えた文字が表示されますので、これだけもメンテナンスモードとして使用できます。

3.  「maintenanceファイル」のアップロードと「.htaccessファイル」の入れ替え

スムーズにメンテナンスモードを表示させるために「maintenanceファイル」をアップロードしてから「.htaccessファイル」を入れ替えます。

【注意点】
「.htaccessファイル」を先に入れ替えると「maintenanceファイル」をアップロードするまでの間、外部からのアクセスの際にエラー表示となります。
  1. 「.htaccessファイル」と同じ階層に「maintenanceファイル」をアップロード
  2. 「.htaccessファイル」の入れ替え(上書き)
Uploading and replacing files

ファイルの場所

以上でメンテナンスモードの設定は完了です。

4.  メンテナンスモードの確認

メンテナンスモードの確認は以下の2項目を確認してください。

  • 「.htaccessファイル」で指定したIPアドレスのPCでWordPressの管理画面に入れるか?
  • 指定以外のIPアドレス(キャリア接続のスマホなど)からの接続でメンテナンスモードが表示されているか?

うまく表示できない場合はプログラムの記述間違いの可能性がありますので、メンテナンスモードを解除(解除方法は後述)してから作成したファイルを見直してください。

【注意点】

お使いのネットワーク環境でIPアドレスが自動取得となっている場合、ルーターの再起動などによってIPアドレスが変更されWordPressの管理画面にログインできなくなる場合があります。
そのような場合は、IPアドレスを確認して変更されていたら「.htaccessファイル」の書き換えを行ってください。

5.  メンテナンスモードの解除

メンテナンスモードの解除はアップロードしたメンテナンスファイルを削除し、「.htaccess ファイル」を元のものと入れ替え(追記のコードを消す)するだけです。

作成した「.htaccessファイル」は使い回しができますので残しておくと大変便利です。また、「maintenanceファイル」も「maintenance.html」の内容を変更するだけで様々なシーンに対応することができます。

WordPressデフォルトのメンテナンスモード

WordPressには、コアやテーマ、プラグインの更新時に自動的に移行する「デフォルトのメンテナンスモード」が備わっています。

デフォルトのメンテナンスモード

  • 画面の表示:「Briefly unavailable for scheduled maintenance. Check back in a minute.(予約されたメンテナンスのため、しばらくご利用いただけません。数分後に再度アクセスしてください。)」と表示されます。
  • 有効化のタイミング:更新が始まると自動的に有効になり、更新が正常に完了すると自動的に解除されます。
  • 有効化の仕組み:サイトのルートディレクトリに「.maintenance」という一時的なファイルが作成され、このファイルがある間、メンテナンスモードの状態になります。

【注意点】

アップデート中にブラウザを閉じたり、一度に多くの項目を更新しようとしてタイムアウトしたりするとメンテナンスモードが解除されないことがあります。

これは、アップデートプロセスが正常に完了せずにメンテナンスファイル(.maintenance)がサーバーに残ってしまうことが原因だと考えられます。その場合、サーバー内の「.maintenance」を削除するとメンテナンスモードが解除できます。

※ 原因はこれだけとは限りませんので更新の前にはバックアップを取っておくことが大切です。

まとめ

「メンテナンスモード」はユーザービリティのために必須のものですが、頻繁に使用するものでもありませんのでプラグインを導入するよりも必要に応じて自作のものを使った方がメリットが多いと思われます。

自作「メンテナンスモード」のメリット

  • WordPressに負荷がかからないのでサイトの表示スピードに影響がない
  • 自作の「メンテナンスモード」は独自のデザインなどの制作が可能で自由度が高い
  • 一定のファイルを制作しておけば何度でも使い回しができる
  • 内容を少し変えるだけで様々なシーンで使用できる

今回の記事制作において参考にさせて頂いたWebサイト

WordPressのメンテナンスモードを、プラグインやテーマに追記なしで表示させる - WEBもがき道場
WordPressには、デフォルトの機能で、「今、更新作業中です」というような表示を一時的に表示させる『メンテナンスモード』というのがあります。これは、管理パネ
プラグインを使わずWordPressサイトでメンテナンス表示する方法 | インフォコネクト株式会社
WordPressサイトではプラグインを使えば簡単にメンテナンス表示ができますが、当然WordPressが正常に動作している必要があります。WordPressに問題が起こっている場合はプラグインが機能しないため、メンテナンス中のページを表示...
タイトルとURLをコピーしました