Xサーバーで指定した時間にBasic認証を解除する方法

※この情報は2022年9月現在の情報です。

ウェブサイトの本番公開前にBasic認証を使用してアクセス制限を掛けておき、本番公開時にBasic認証を削除してアクセス制限を解除する事があると思います。
何らかの事情で公開時間に作業が出来ない場合に役に立つ「Cronを使用した指定時間にBasic認証を解除する方法」についてご紹介します。
本記事はXサーバーを使用する場合の内容となります。

実行ファイルを作成する

今回ご紹介する方法は、サーバーに置かれている.htaccessの中に書かれているBasic認証に関する記述に「#」をつけてコメントアウトして解除する方法となります。コメントアウトはPHPの実行ファイルをCronで動作させて行います。
まずはこのPHPの実行ファイルを作成します。

サーバーから.htaccessファイルをダウンロードする

.htaccessのどの部分をコメントアウトするのかを確認するために、サーバーから.htaccessをダウンロードします。(既にBasic認証が掛かっている前提です)

以下の例(画像参照)の場合、3~6行目がBasic認証に関する記述になりますので、この部分をコメントアウトするように実行ファイルを作成します。

ちなみに1、2行目はXアクセラレータ機能を使用している場合に表示されるものですので、Xアクセラレータを使用していない場合は表示されません。

WordPressなどCMSを使用している場合や、サーバーの他機能の利用などにより、数十行程度の記述がある場合も多々ありますので、該当部分以外をコメントアウトしてしまわないよう十分注意してください。

※本内容により不具合を生じても一切の責任を負いません。自己責任で作業をお願いします。

PHPファイルには以下のように記述します。
「3,6」の部分にコメントアウトしたい行を指定します。カンマで区切ってますが3行目~6行目と言う意味になります。

<?php
  $cmd = "sed -i'' '3,6s/^/#/g' /home/サーバーID/ドメイン名/public_html/.htaccess";
  echo exec($cmd);
?>

「サーバID」はXサーバの契約時に任意で設定したIDとなります。任意の名称で設定していない場合は、自動で割り振られている「xs〇〇〇〇〇〇」(〇には数字が入ります)のような名称になっていると思います。(svから始まるサーバー番号ではありません)

「ドメイン名」の部分は「https://」は要りません。

例えば、サーバIDが「xs〇〇〇〇〇〇」ドメインが「live-naturally.jp」の場合、以下のように記述します。(実際の環境に合わせて適宜変更してください)

<?php
  $cmd = "sed -i'' '3,6s/^/#/g' /home/xs〇〇〇〇〇〇/live-naturally.jp/public_html/.htaccess";
  echo exec($cmd);
?>

これを任意の名前で保存します。今回は「htaccess-edit.php」としました。

作成した実行ファイルをサーバーへアップする

作成した「htaccess-edit.php」をサーバーへアップロードします。サイト全体にBasic認証を掛けてますので、ドメイン直下へアップします。

XサーバーのCronを設定する

次に、上で作成した実行ファイルを指定時間に動作させるために、サーバーのCronを設定します。

Xサーバーのサーバーパネルへログインして「Cron設定」をクリック

Cronの設定を入力

Basic認証を解除したい時間が9月30日(金)17時の場合、下記のように設定します。

上で開いた画面の「Cron設定追加」タブをクリックします。
すると以下の画面が開きますので、ここに必要な情報を入力します。

曜日欄は、曜日を数字に置き換えて下記いづれかで設定します。
月=1、火=2、水=3、木=4、金=5、土=6、日=7

今回の例は金曜日ですので「5」を入力しています。

コマンド欄には下記のように設定します。

/usr/bin/php-fcgi7.4 /home/サーバID/ドメイン名/public_html/任意のファイル名.php

「/usr/bin/php-fcgi7.4」の部分は、現在サーバー側で設定しているPHPのバージョンを記入してください。

PHPのバージョンによる記述方法はXサーバーのコマンドパス一覧に掲載されていますので、そちらを参照ください。

Xサーバーコマンドパス一覧

「任意のファイル名」は上の項で作成したファイル名を記述します。上で作成したのは「htaccess-edit.php」ですので、そのように記述します。

例えば、サーバIDが「xs〇〇〇〇〇〇」ドメインが「live-naturally.jp」の場合、以下のように記述します。(実際の環境に合わせて適宜変更してください)

/usr/bin/php-fcgi7.4 /home/xs〇〇〇〇〇〇/live-naturally.jp/public_html/htaccess-edit.php

全て記入できたら保存して完了です。

動作検証を行う

予定時間にうまく動かなかった、なんて事にならないよう、事前に動作検証しておきましょう。

同サーバー内の別のディレクトリで動作検証するなど、Cron実行後に確実にBasic認証が解除されるか確認してから使用する事をおすすめします。

サーバ・ドメイン設定の最新記事8件