Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【Apache】特定のアドレス(ディレクトリー)のみ、パスワードを入力しなければ開けないようにする。

Apacheで簡単なサーバーを構築する場合、あるアドレス(フォルダー)のみ、開くのにパスワードを入力しなければ開けるようにしたい時がある。

例えば、アドレスhttp://www.kaisha.co.jp/profileは開けるが、アドレスhttp://www.kaisha.co.jp/kokyakuはパスワードを入力しなければ開けないようにしたい場合。これは、CGI等を利用するのではなく、Apacheの機能を使用して設定することができる。なお、以下の設定はウィンドウズ版について。

大きく分けて手順が3つ。

  1. Apacheの設定
  2. .htpasswdの設定
  3. .htaccessの設定

まず、htdocsの設定。なお、Apacheのインストール先はC:\Apache24\htdocsとする。

設定ファイルhttpd.conf(C:\Apache24\conf)を開く。AllowOverrideがNoneになっているはずなので、以下のようにAllにする。

<Directory "c:/Apache24/htdocs">
(略)
AllowOverride All
(略)
</Directory>

次に、.htpasswdの設定。

これは、開く際に入力するユーザー名とパスワードを指定するファイルである。
なお、このファイルを外部から見られる場所に置くと、当然、パスワードも見られてしまうことになりパスワードを設定した意味がなくなるため、外部からは絶対に見られないフォルダーに置く。以下の例ではC:\Apache24\confに置いている。

PowerShellを実行し、フォルダーC:\Apache24\confで、htpasswdを使用して、パスワードの設定ファイルを作成する。最初はこのファイルがなく、-cオプションを使用して実行することで、ファイルを新規作成することができる。以下の例では、ユーザーaiueoを作成している。設定する*******はパスワードを入力した箇所。

PS C:\Apache24\conf> C:\Apache24\bin\htpasswd -c .htpasswd aiueo
New password: ********
Re-type new password: ********
Adding password for user aiueo

なお、既にファイルがある場合は-cオプションは使用せずに、以下のようにユーザー名の未指定をすればよい。以下はユーザーkakikukekoを作成する例。

PS C:\Apache24\conf> C:\Apache24\bin\htpasswd .htpasswd kakikukeko
New password: ********
Re-type new password: ********
Adding password for user kakikukeko

最後に、.htaccessファイルを作成する。

このファイルが置かれたフォルダーにアクセス制限をかけることになる。テキストエディターで以下のファイルを作成し、置けばよい。

AuthType Basic
AuthName "Please enter your username and password."
AuthUserFile C:/Apache24/conf/.htpasswd
Require valid-user

AuthNameは表示するメッセージなので自由。ただし「""」などとするとうまく動作しない。

最後に、Apacheを再起動する。PowerShellを管理者として実行して、以下のようにする。

PS > C:\Apache24\bin\httpd.exe -k restart