特定のURLにBasic認証を設定

htaccess

WEBサイトの特定のURLにIDパスワードをかける方法についてお伝えします。

WEBサイトにパスワードをかけ、IDパスワードを入力しないと閲覧できないようにする仕組みのBasic認証については、「Basic認証」で検索するとたくさん対応方法についてのサイトが見つかり、設定方法も簡単に見つかりますが、基本としては下記のように「.htaccess」「.htaccess」を作成してFTPツール等でサーバーにアップロードすることで対応ができます。

1行1行の説明についてここでは割愛します。詳しく記載してあるサイトを見てみてください。

Basic認証

「.htaccess」の記載

AuthUserFile /xxxx/xxxx/xxxx/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

「.htpasswd」の記載

user:password

※ /xxxx/xxxx/xxxx/ は、「.htaccess」までのファイルパスです。

「.htaccess」のpasswordは暗号化する必要があります。作成ツールもいろいろとありますが、こちらのサイトがおすすめです。
.htpasswd生成ツール(MD5対応)
8文字以上のパスワードを設定する場合のMD5に対応しています。
MD5対応の記載がない作成サイトで、8文字以上のパスワードを設定して作成しても、MD5に対応していないと、8文字目以降は無効となり、意味がありませんので注意してください。

上記のようにBasic認証をせっていすることで、「.htaccess」を配置したフォルダ配下へのアクセスはすべてIDパスワードの入力が必要となります。
サイトすべてにパスワードを設定したい場合は、トップページの階層に配置し、特定のフォルダ配下に設定したい場合も、そのフォルダに設定することで問題ありませんが、特定URLだけに設定したい場合は、このままでは対応できません。
(パスワードを設定したフォルダ配下にURLが1つしかない場合はこれで良いですが、、、)

特定URL Basic認証

特定のURLにだけパスワードを掛けたい場合は、下記のように「.htaccess」を記載します。

Satisfy Any

AuthUserFile /xxxx/xxxx/xxxx/.htpasswd
AuthName "Input your ID and Password."
AuthType Basic
require valid-user

SetEnvIf Request_URI "/xxxx/test1.html" certification
SetEnvIf Request_URI "/xxxx/xxxx/test2.html" certification
order Allow,Deny
Allow from all
Deny from env=certification

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

Satisfy Any として、いずれかの条件がOKならばとして、SetEnvIf Request_URI で、Basic認証を掛けたいURLを設定します。
複数のURLは、それぞれ記載して指定します。

特定のフォルダ配下のURLをすべて指定したい場合は、下記のように記載します。

SetEnvIf Request_URI "/xxxx/test/*" certification

特定のフォルダへの設定に関しては、「.htaccess」「.htaccess」を配置することで対応できますが、WordPressなどフォルダ構成になっていない構造のサイトでは、上記のような記載で対応することができます。

今回は、Basic認証について意外と特定のURLやWordPressサイトでの設定するための掲載が少ないので簡単ですがまとめてみました。

以上、今回はWEBサイトの特定のURLへBasic認証を設定する方法について、書いてみました。
この記事が、少しでもWEBサイト制作の参考なればうれしいです!!

コメント