会員専用ページを作る方法 (ベーシック認証 / 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で指定した場合にはリダイレクトになります。
[参考記事] リダイレクトとフォワードの違い
スポンサーリンク
関連記事
- Apacheから2GB以上のファイルをダウンロードしようとすると403エラーが出ます
- [warn] _default_ VirtualHost overlap on port 80, the first has precedence エラー
- Zend Serverとは
- 特定のディレクトリのみベーシック認証を外す方法
- Cactiのインストール RRDToolを利用したサーバ監視ツール
- svn: '/home' does not appear to be a URL 同サーバ内にあるリポジトリの指定
- SVNリポジトリを別のサーバに移行する方法
- svn: Repository moved temporarily; please relocate PROPFIND request failed
- locateデータベースの更新
- JP106キーボードを使用する設定
- VirtualBoxでホストOSと同じネットワークにする方法
- VMware Serverのファイル・サービス
- VirtualBox、仮想OSのインストール
- IPアドレス制限とベーシック認証を併用する方法
- memcachedの仕組み(オンメモリストレージ・Slab Allocator)
- CGI(Perl)をApacheで使用するときの設定
- NTPサーバで時計を調節する (the NTP socket is in use, exiting とは)
- CVSについて
- Oracle Berkeley DBのインストール
- VMware Serverの使い方
- VMWare Serverのインストール
- webサーバーのレスポンスコード
- HTML
- SELECTタグで色を選択する場合のサンプル
- 生年月日などで年を選択するときのサンプルコード
- Google Chromeで一部の文字だけ四角記号に文字化けするときの対処法
- htmlファイルのコメントに <!--# から始まるものは使用しないほうがいい
- ナインパッチとは(9-Patch)
- 都道府県を選択するときのサンプルコード (JISコード準拠)
- DOCTYPE宣言/XML宣言
- 連続する半角英数字を途中で自動改行させるには、​が使えます
スポンサーリンク






