サブディレクトリ認証 · 1 min read · Jan 04, 2026

.htaccessを使用したサブディレクトリの認証

.htaccessを使用したサブディレクトリの認証

著者: Nayyar Ahmad

連絡先: nayyares AT gmail DOT com

ホームページ: www.cbtcandy.org

献辞: バジに、 彼女が私のために尽くしてくれたすべての努力に。

前書き:

.htaccessは、ディレクトリごとに設定を変更するための機能を提供するために使用されます。このファイルには、.htaccessファイルを含むディレクトリに強制される1つ以上のディレクティブを含めることができます。

.htaccessは、この設定変更ファイルの一般的な名前であり、Apacheの設定ファイルでAccessFileNameパラメータを変更することで、このデフォルト名を変更できます。すなわち。

AccessFileName .anyname

このハウツーでは、2つの平行レベルのサブディレクトリのダミーシナリオを取り上げ、両方にパスワード認証を実装します。これは、正しいユーザー名とパスワードを持つユーザーのみがこれらのディレクトリにアクセスできることを意味します。

それでは始めましょう :)

ここでは、あなたのDocumentRootディレクトリが/var/www/htmlであると仮定していますが、VirtualHostの設定がある場合や、Apacheが他のルートディレクトリに設定されている場合は、状況に応じて調整できます。

注意: これらのディレクトリには、test-dir1とtest-dir2という2つのダミー名を使用します。

1 ディレクトリの作成:

$ cd /var/www/html
$ mkdir test-dir1
$ mkdir test-dir2

2 テストHTMLファイルの作成:

最初のディレクトリにhtmlファイルを作成します。

$ cd /var/www/html/test-dir1
$ cat > index.htm

| TEST PAGE IN TEST-DIR1. |

2番目のディレクトリにhtmlファイルを作成します。

$ cd /var/www/html/test-dir2
$ cat > index.htm

| TEST PAGE IN TEST-DIR2. |

3 テストページの閲覧:

今、あなたはブラウザを開いて、ページが利用可能かどうかをテストできます。私はFirefoxが好きです(それは素晴らしいです :) )そして、次のように入力します:

http://localhost/test-dir1/

これにより、最初のディレクトリのテストページが表示され、

http://localhost/test-dir2/

はtest-dir2の2番目のテストページを表示します。

両方のページが表示される場合は、あなたはほぼ.htaccessを使いこなす準備が整っています。

4 .htaccessファイルの作成:

$ cd /var/www/html/test-dir1
$ vi .htaccess

このファイルに次の行を書き込みます:

| AuthName "Authorized Users Only." AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user testusr |

今、私たちがこのファイルに書いた魔法の行について説明します:

AuthNameパラメータは、ユーザーがログインするときのパスワード入力ボックスのタイトルを定義します。一方、AuthTypeはサーバーにどのような処理が使用されているかを伝え、Basicはほとんどの目的に対して最も一般的で十分です。 AuthUserFile は、.htpasswdファイルの場所を定義するために使用され、このファイルには.htaccessファイルで認証されるユーザーのパスワードが含まれます。require userは信頼されたユーザーを特定するために使用され、信頼されたユーザーが複数いる場合は、スペースで区切られたリストでその名前を指定できます。

次に、test-dir2を.htaccessで保護するために、次のコマンドを使用してtest-dir1からコピーする必要があります:

$ cp /var/www/html/test-dir1/.htaccess /var/www/html/test-dir2/

5 ユーザーの作成:

ここでは、.htaccessをチェックするためのテストユーザーを作成します:)

$ adduser testusr
$ passwd testusr

6 Apacheにユーザーを知らせる:

今、私たちはApacheにユーザーとそのパスワードを知らせる必要がありますが、このステップに進む前に、私には社会的な義務があります。すなわち、RPMとソースApacheインストールの違いを説明することです。 :) RPMからApacheをインストールした場合、すべての関連コマンドが/usr/local/binにインストールされるため、問題はありません。システムのどこでもhtpasswdコマンドを実行できますが、ソースからApacheをインストールした場合は、htpasswdコマンドを実行するためにApacheのbinディレクトリを見つける必要があります。このハウツーでは、両方の方法を示します。こちらです:

$ htpasswd -c /etc/httpd/conf/.htpasswd testusr

上記のコマンドは、/usr/local/binにhtpasswdがある場合に機能します。これは、RPMからApacheをインストールした場合に発生します。/etc/httpd/conf/.htpasswdは、認証された/信頼されたユーザーのパスワードを含むファイルの場所です。

または

$ cd /apache/bin/
$ ./htpasswd -c /etc/httpd/conf/.htpasswd testusr

上記のコマンドは、ソースからApacheをインストールした場合に正しいです。$ cd /apache/binは、システムに応じて調整できます。おそらくどこか別の場所にインストールしたかもしれません。

7 .htpasswdファイルの権限:

.htpasswdファイルのファイル権限を設定し、apacheユーザーをこのファイルの所有者にする必要があります。

$ chown apache.apache /etc/httpd/conf/.htpasswd

8 httpd.confの編集:

今、httpd.confを編集する必要があります。Apacheは.htaccessについて知らされる必要があります。ここでは、AllowOverride All | noneをAuthConfigに変更します。ここには2つのケースがあります。1つは単一のサイトをホスティングしている場合、もう1つはVirtualHostを持っている場合です。最初のケースは:

この場合、httpd.confファイルには1つのDirectoryタグしかないため、単一のサイトをホスティングしているので、/var/www/htmlのタグを編集します。

| AllowOverride AuthConfig Order allow,deny Allow from all |

次に、複数のサイトをホスティングしている場合、すなわちVirtualHostの場合:

| DocumentRoot /var/www/html/cbtcandy ServerName www.cbtcandy.org AllowOverride AuthConfig Order allow,deny Allow from all Options -Indexes |

9 Apacheの再起動:

今、Apacheサーバーを再起動して設定を再読み込みする必要があります。

RPMベースのシステムの場合:

$ service httpd restart

ソースベースのシステムの場合、Apacheのbinディレクトリパスを調整します。

$ /apache/bin/apachectl restart

10 テスト:

今、すべてがテストの準備が整いました。再度、お気に入りのブラウザを開き、次のリンクを開いてみてください:

http://localhost/test-dir1/

および

http://localhost/test-dir2/

注意: これらのリンクをブラウズすると、ユーザー名とパスワードを求められます。一度提供すると、テストページに移動します。しかし、一つのディレクトリにログインすると、他のテストディレクトリのためにユーザー名とパスワードを再度要求されることはありません。Apacheは、同じレベルのディレクトリやサブディレクトリに対してユーザー名とパスワードを何度も要求しません。したがって、一度認証されると、子ディレクトリと平行ディレクトリは使用可能になります。しかし、まだ確認したい場合は、links*テキストベースのブラウザを使用してください。私がそれを確認するために行うことです。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。