会員専用ページを作る方法 (ベーシック認証 / Basic認証 / 基本認証)

ベーシック認証を設定するには、アクセス制限をかけたいディレクトリに .htaccessファイルを置き、またIDとパスワードが記載された .htpasswdファイルを設置します。
.htpasswdファイルは制限をかけたいディレクトリ以下に置く必要はないので、よりセキュリティを高めたいなら公開層には置かないようにします。
(ただしApache権限でアクセスできる階層に限ります)

またApacheの設定ファイル(httpd.confファイル)での設定も可能です。

[参考記事] 自端末以外からの閲覧を拒否する方法
[参考記事] IPアドレス制限とベーシック認証を併用する方法
[参考記事] 特定のディレクトリのみベーシック認証を外す方法

パスワードファイルを作成するには、『ベーシック認証用のパスワードファイルを作るツール』で作成できます。

ID、パスワードの入力画面は、Internet Explorer6では下の画像のようなものが出ます。

.htaccessファイルで制限する場合

<Files ~ "^\.(htpasswd|htaccess)$">
order allow,deny
deny from all
</Files>

AuthUserFile 【 .htpasswd の絶対パス 】
AuthName "Secure Area (It is necessary to enter your ID and password)"
AuthType Basic
<limit GET POST>
require valid-user
</limit>

いくつかのサイトには、以下のようにありますが

<Files ~ "^.(htaccess|htpasswd)$">
order allow,deny
deny from all
</Files>

これは間違いです。

.htaccessと.htpasswdにアクセス制限をかけている部分で、正規表現を使っていますが、 『 .(ドット) 』は全ての1文字という意味がありますので、たとえば『ahtaccess』という名前のファイルにも制限がかかります。
正しくはドットを上記のように『 \ 』でエスケープしなければいけません。

httpd.confファイルなどで制限する場合

<Directory "【 制限をかけたいディレクトリ 】">
AuthUserFile 【 .htpasswd の絶対パス 】
AuthName "Secure Area (It is necessary to enter your ID and password)"
AuthType Basic
<limit GET POST>
require valid-user
</limit>
</Directory>

<Directory "/usr/local/apache/htdocs/secure/">
AuthUserFile /usr/local/apache/htdocs/secure/.htpasswd
AuthName "Secure Area (It is necessary to enter your ID and password)"
AuthType Basic
<limit GET POST>
require valid-user
</limit>
</Directory>

自端末以外に認証をかける方法

アクセス制限とベーシック認証の組み合わせです。

[参考記事] 自端末以外からの閲覧を拒否する方法

<Directory "【 制限をかけたいディレクトリ 】">
AuthUserFile 【 .htpasswd の絶対パス 】
AuthName "Secure Area (It is necessary to enter your ID and password)"
AuthType Basic
Order Allow,Deny
Allow from 【 認証をかけないIP 】
Satisfy Any
</Directory>

認証に失敗したときに表示されるページ

認証に失敗すると、サーバーからは 401 のエラーコードが返されます。
このときブラウザの表示には、ブラウザに組み込まれているエラーページが表示されます。

Internet Explorer6では次のような画面です。


この表示をサイトのものに変えるには次のコードを .htaccessに記載します。

ErrorDocument 401 【ルート階層からのパス】
または
ErrorDocument 401 【 エラーページのURL 】

たとえば次のようになります。

ErrorDocument 401 /error/401.html
または
ErrorDocument 401 http://www.example.com/error/401.html

パスで指定した場合にはフォワード、URLで指定した場合にはリダイレクトになります。
[参考記事] リダイレクトとフォワードの違い

関連記事

スポンサーリンク

Array.splice

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る