WordPressのマルチサイトにBasic認証を手際よくかけたい

WordPressでマルチサイトを作成したサイトにBasic認証をかけるたい場合があります。

具体的には、マルチサイトのURL「http://exemple.com/」の「http://exemple.com/sample/」にBasic認証をかけたい、という場合です。

私は、WordPressを設置しているルートディレクトリにFTPで「sample」というディレクトリを作成します。

次に、作成したディレクトリ「sample」の中にルートディレクトリの「index.php」をコピーします。

この作業での注意は、「index.php」の中の記載を修正することですが、ついつい忘れてしまいます。

具体的には、
「require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );」

「require( dirname( __FILE__ ) . ‘/../wp-blog-header.php’ );」
このように修正します。

「wp-blog-header.php」のパスは、ルートディレクトリから1階層下の場所にあるので「../ 」が必要なんですね。

なお、Basic認証のためには、「.htaccess」と「.htpasswd」を作成して、FTPでサーバーにアップロードする必要があります。

Basic認証をかけたいサイトが複数ある場合に、それぞれのディレクトリー名のフォルダーを作成して、それぞれに「.htaccess」と「.htpasswd」を置く、というのが基本です。
ところが、この手順を間違えたり、忘れてしまったりすることが多いんですよね。

そこで、ミスを無くして簡単にBasic認証をかけられる方法を考えてみました。

よく考えると、パスワードが記載されている「.htpasswd」は、共通のフォルダーに置いて一つにすることが可能です。
また、「.htaccess」の中身も、「.htpasswd」へのパスを共通にすると、全部が同じで共用することができます。
そして、「index.php」の中身も共通です。

ということは、最初に下記の3つのファイルを用意してしまえばいい、ということに気づきました(下記の/home/exempleというパスは単なる例です)。

1)「.htpasswd」を「/home/exemple」の中に一つ作成する
2)「.htaccess」を下記のような内容で一つ作成する
//////////////////////////////////
AuthUserFile /home/exemple/.htpasswd
AuthGroupFile /dev/null
AuthName “Protected Member’s Area”
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
//////////////////////////////////
3)「index.php」の中の「wp-blog-header.php」のパスを修正したファイルを一つ作成する

この2)と3)のファイルをパックにして、Basic認証をかけたいサイトができたら、FTPでフォルダーを作成して、アップロードすればOKです。

あるいは、最初から、2)と3)のファイルを入れた任意のフォルダーを作成しておいて、Basic認証をかけたいサイトができたら、フォルダーをリネームすれば、OKです。

なお、「.htpasswd」に複数のユーザーを登録する場合には、URLがわかってしまうと、全員が全部のサイトを閲覧できてしまいますので、一工夫が必要ですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です