さくらサーバーでBasic認証をしたり、IPアドレスやホストの制限、ファイル単位での制限をする場合の.htaccessの書き方を紹介します。
最終更新日:2023-10-28 16:23
他人に見られたくないディレクトリやプログラムファイル、データファイルにパスワードを設定するには、「Basic認証」という機能を使用します。
今回は「さくらサーバー」で、ファイルやディレクトリ単位でBasic認証をするための「.htaccess」の書き方を紹介します。
ベーシック認証をさらに強力にした、IPアドレスやホストによる制限も加えてみました。
先日、管理しているサイトを管理していたら、ベーシック認証が出来なくなっていました。そういえばいつからだっけ?と思いだしてみたのですが、どうもだいぶ前から誰でもアクセスできる状態になっていたっぽい。
設定(.htaccess)を見直してみたのですが、ちゃんとパスワード認証が動作していた時と変わりない記述で、変更した覚えもありません。
さくらサーバーの方針転換でベーシック認証が使えなくなったのかな?
色々調べてみたのですが、私と同じような症状で悩んでいる人はいないっぽい。しかも「.htaccess さくらサーバー Basic認証」的な内容でググっても、さくらサーバーのヘルプページが表示されるだけで、よくわからない。
さくらサーバーのヘルプページは、「.htaccess」による設定ではなく、ファイルマネージャーを使ったディレクトリ単位の制限なので、私が実現したい制限とはちょっと違う。
私が実現したいのは、すべてのサブドメインに対して一律に特定の名称のファイルにアクセスするときは、ベーシック認証をかけ、さらにIP/ホストによる制限もかける。
という感じ。
結論から言ってしまうと、さくらサーバーでもファイル単位・ディレクトリ単位・サブドメイン単位のベーシック認証を.htaccessで出来ます。
やり方は以下。
自分でIDとパスワードが記述されたファイルを用意してもいいのですが、今回はパスワードの作成から行う手順を紹介します。
まずはさくらサーバーの管理画面にログインします。
特定のサブドメインやディレクトリにだけ適用させたい場合は、適用させたいサブドメインのフォルダ、もしくは適用させたいディレクトリのフォルダを開いて反転表示させます。
適当な名前でかまいませんが、今回は「Password」という名前にします。「OK」をクリック。
②「両方の許可がないとアクセス不能」にチェックを入れます。
ここにチェックを入れると、指定したIPアドレス/ホストでないと、そもそも指定したファイルにアクセスできなくなります。
もし、パスワードさえ合っていればアクセスさせる場合は、「一方の許可があればアクセス可能」のほうにチェックを入れます。
「パスワードファイル」の部分の「編集」をクリックします。
①は、ユーザー名。
②と③は、パスワード。同じものを入力します。
④は、パスワード管理画面で参照するコメントなので何でも構いません。(鈴木さんのIDなどわかりやすいもので)
⑤の「OK」をクリックします。
「OK」をクリックします。
これでIDとパスワードが記述された特殊なファイル「.htpasswd」というファイルが、作成したフォルダ内に作成されました。
いよいよ「.htaccess」ファイルを作成します。
①の<Files basic.php> は、アクセス制限したいファイルの名称にします。
「basic.php」の部分を適当に変更してください。
②の「AuthUserFile」以降のパスは、ご自身の環境に合わせて先ほど作成した「.htpasswd」ファイルに変更してください。
③は、アクセス可能にするIPアドレスもしくはホスト名のドメインを指定します。
自分はアクセスさせたい場合は、IP/ホスト変換ツールで表示させてみてください。
「Satisfy all」は、パスワード認証とIPアドレス/ホストの制限のどちらもマッチしないとアクセスできない設定です。
「Require valid-user」は、パスワード認証を通過したアクセスは以後、認証なしでアクセスさせます。
内容は以下のようにします。■色の部分は、各自の環境によって変更してください。
① sample.html パスワードを掛けたいページ
② /home/userABCD/www/Password/.htpasswd・・・パスワードが保存されているファイルへのパス
③ .docomo.co.ne・・・アクセスを許可するホスト(例ではドコモ通信からのアクセスは許可)
<Files sample.html> AuthUserFile /home/userABCD/www/Password/.htpasswd AuthType Basic AuthName "Web access" Require valid-user Satisfy all Order deny,allow Deny from all Allow from .docomo.co.ne </Files>
このように「ユーザー名」と「パスワード」の入力画面が出れば成功です。
登録したIDとパスワードを入力し、きちんとアクセスできるか確認してください。
パスワードを記述したファイルへのパスが間違っていないか(大文字小文字の違いなど)確認してください。
またスペルミスが無いか確認してください。
.htaccessファイルは、より下位にあるファイルの方が優先されます。
今回はトップディレクトリ上に設置しましたが、サブドメインや下位のディレクトリ内に設置した「.htaccess」の方でアクセスを許可させてしまっていると、ベーシック認証がうまく動作しなかったり、誰でもアクセスができてしまう状態になってしまいます。
うまく動作しない場合は、サブディレクトリに.htaccessファイルが無いか調べてみてください。
また、
Deny from all
Allow from xxxxx
のように「Deny」がないとうまく制限できないので注意。
Sponsored Link