Webサイトの特定ディレクトリにアクセス制限をかける方法
公開日:2014年2月27日
最終更新日:2014年7月13日
会員ページやダウンロードページなど、Webサイトの特定ディレクトリ内にあるファイルにアクセス制限をかける方法として、BASIC認証(基本認証)と呼ばれる機能を使うやり方を解説します。
【コンテンツ】
【記事執筆時の環境】
レンタルサーバー:XSERVER、ロリポップ
BASIC認証(基本認証)の概要
BASIC認証が施されたWebページでは、ユーザーがアクセスした際、認証ダイアログが表示されてユーザー名(ID)とパスワードの入力を求められます。
入力したIDとパスワードが一致していないと、エラーメッセージが表示されます。
エラーメッセージはサーバーやブラウザによって異なりますが、独自に作成することも可能です。
BASIC認証の設定は、ファイル単位でなく、ディレクトリ単位で行います。
設定は、「.htaccess」に記述します。
アクセスを許可するIDとパスワードに関しては、その組を記述したファイルを別に用意します。
BASIC認証は、この2つのファイルを用意すると実現できます。
また、多くのレンタルサーバーでは、管理画面からBASIC認証を用いてアクセス制限を設定する機能を持っています。
「.htaccess」の作成
テキストエディタで、以下の4行を記述します。
1 2 3 4 |
AuthUserFile "IDとパスワードを記述したファイルのパス" AuthName "領域名" AuthType BASIC require valid-user |
1行目の"IDとパスワードを記述したファイルのパス"は、サーバー内のフルパスを指定します。
httpで始まるURLではありませんので注意します。
2行目の"領域名"は任意の名前を付けますが、アクセスした際の認証ダイアログに表示されますので、適した名前にします。
また、文字化けの可能性がありますので日本語は避け、半角英数文字で記述します。
作成した「.htaccess」は、アクセス制限をかけるディレクトリにおきます。
そのディレクトリ以下のファイル・サブディレクトリすべてがアクセス制限の対象となります。
【補足】
サーバー内のフルパスがどうなっているかわからない場合は、次のようにして調べることができます。
例えば、fullpath.phpという任意の名前のPHPファイルを作成し、以下のように記述してフルパスを知りたいディレクトリにおきます。
1 |
<?php echo __FILE__ ?> |
このファイルをブラウザでアクセスすると、ファイルまでのフルパスが表示されますので、サーバー内のディレクトリ構成を知ることができます。
ID/パスワードファイルの作成
IDとパスワードを組にして記述したファイルを作成します。
ファイル名は任意につけられますが、一般的には「.htpasswd」という名前が用いられています。
内容としては、以下のようにIDとパスワードを半角コロンで区切り、1行に1組ずつ記述します。何組あっても構いません。
hanako:uSpgpQTl02u3c
taro:4KzgRLpqapbHw
ここで、パスワードは暗号化されており、本来入力する文字列にはなっていません。
パスワードを暗号化するには、暗号化サービスを提供しているサイトを利用すると便利です。
例えば、下記サイトにアクセスします。
http://www.nishishi.com/scripts/htpasswd/
ファイルを作成したら、Webサイト内の適当なディレクトリにおきます。
「.htaccess」と同じディレクトリでなくても構いません。
ただ、ディレクトリとファイル名は、「.htaccess」のAuthUserFileに記述した内容と一致する必要があります。
以上、2つのファイル「.htaccess」「.htpasswd」を作成して、Webサイト内に設置すれば、BASIC認証の仕組みを利用することができます。
XSERVERでのBASIC認証の利用
XSERVERでは、管理画面からBASIC認証機能を使って、ディレクトリにアクセス制限をかけることができます。
サーバーパネルにログインします。
設定対象とするドメインをドロップダウンリストから選択します。
[アクセス制限]をクリックします。
アクセス制限をかけたいディレクトリの横にあるボタンでON/OFFを切り替えます。
下層のディレクトリを表示したい時は、[フォルダ名]の列の該当箇所をクリックします。
IDとパスワードを設定するために、指定するディレクトリの[ユーザ設定]をクリックします。
[ユーザID]と[パスワード]を入力して、[ユーザの追加]ボタンをクリックします。
パスワードはシステム側で暗号化してくれますので、通常の文字列を入力します。
これで、アクセス制限の設定ができました。
なお、XSERVERでは、管理画面から"AuthName"の設定はできません。
設定が完了すると、以下のような「.htaccess」が作成されます。
XSERVERでは、「.htpasswd」は「.htaccess」と違うディレクトリに配置されているのがわかります。
ロリポップでのBASIC認証の利用
ロリポップも、管理画面からBASIC認証機能を使って、ディレクトリにアクセス制限をかけることができます。
ユーザー専用ページにログインします。
[WEBツール]-[アクセス制限]をクリックします。
[新規作成]ボタンをクリックします。
アクセス制限を設定したいドメインをドロップダウンリストから選択し、ディレクトリを指定します。
「認証フォームタイトル」「アカウント名」「パスワード」を入力して、[作成]ボタンをクリックします。
パスワードはシステム側で暗号化してくれますので、通常の文字列を入力します。
これで、アクセス制限の設定ができました。
設定が完了すると、以下のような「.htaccess」が作成されます。
ロリポップでは、「.htpasswd」は「.htaccess」と同じディレクトリに配置されているのがわかります。
なお、2行目の「AuthGroupFile」とは、ログインするグループのIDとパスワードを記述したファイルの場所を指定しますが、BASIC認証ではユーザー毎の認証のため必要ありません。
「/dev/null」とは指定が無いという意味です。
スポンサーリンク