先日、クライアントにお見せするテストサイトに、ベーシック認証をかけてほしいという要望があったのですが、自社で使用しているステージングサーバー、お名前.comのSD-11プランのコントロールパネルからかけてみることにしました。
ですが、かけてみてもサイトが普通に表示されてしまいます。
ブラウザを変えてみてもダメでした。
どうやらサイト表示用URLを変更するために作られる、.htaccessがアクセス制限をかけたいディレクトリに出来てしまうことが原因のようです。
.htaccessファイルを削除してしまえば、お名前サーバーのアクセス制限機能が使えるのですが、それだと、//ドメイン名/wp というURLになってしまいますので、この機能を使わずに、別の方法でかけることにしました。
まぁ、それが一般的なベーシック認証のかけ方なのですがw
必要なものは、既にディレクトリにある.htaccessファイルと、パスワードを格納しておく.htpasswdファイルです。
順序的にはこんな感じです。
①.htpasswdファイルを作成し、サーバーにアップする。(.htaccessがある場所と一緒でOK)
②.htaccessにベーシック認証をかけるための記述をする。
以上です。
とても簡単に思えますが、2時間ほどハマってしまいましたので、なるべくわかり易く説明いたしますね。
Contents
まず、IDとパスワードを決めて、それを格納するためのファイルを作ります。それが.htpasswdファイルです。
.htpasswdですが、パスワードを暗号化して作成するのが一般的です。そのようなツールはたくさんあるみたいなんですが、私はコレを使いました。
http://www.luft.co.jp/cgi/htpasswd.php
IDとパスワードを入力して、「生成」ボタンを押すだけで、IDと紐づけた暗号化されたパスワードが表示されます。
それを、メモ帳や秀丸などのテキストエディタにコピペして、.htpasswdという名前で保存します。
文字コードはUTF-8で、.txtなどの拡張子は付けずに保存してください。
作成した.htpasswdファイルをアップする場所ですが、基本的には.htaccessファイルがある場所にアップしてOKです。
お名前サーバーでWordPressをインストールされている場合は、既に.htaccessファイルが作成されているはずですので、そのテイでお話いたしますね。
まずは、.htaccessファイルを開いてみます。
すでに、# BEGIN WordPressみたいな記述がされていると思います。
その上部に下記を記載します。
AuthUserFile /ここにパスを記載します/.htpasswd AuthGroupFile /dev/null AuthName "Please Enter your ID & Password" AuthType Basic require valid-user <Files ~ "^.(htpasswd|htaccess)$"> deny from all </Files>
コードについての説明は、下記のサイトで詳しく説明されています。
http://qiita.com/yuwaita/items/e406c645ae8d0cc3c3fa
いつもありがとうございます。
【ここにパスを記載します】の部分は、.htpasswdファイルが存在する場所までの絶対パスを記述します。
私の場合はここでつまづきました。
URLで指定してはダメなんですね。。。
絶対パスの取得の仕方ですが、
<?php echo __FILE__; ?>
とだけ記述したphpファイルを作成します。
名前はindexじゃなければなんでもいいです。(index.phpは既にサーバーにあるので)
そのphpファイルを、.htaccessと.htpasswdがある場所にアップします。
そして、ブラウザから、アップしたphpファイルにアクセスしてみます。
例えば、test.phpでアップした場合は、
http://kyo-kara.xyz/test.php
といった感じです。
すると、
/export/sd211/www/jp/r/e/gmoserver/0/0/sd0000000/kyo-kara.xyz/test.php
ブラウザ上に上記のような表示が出てきます。これが、test.phpまでの絶対パスということですね。
先ほどの、【ここにパスを記載します】の部分にこれを当てはめると、こんな感じですね。
AuthUserFile /export/sd211/www/jp/r/e/gmoserver/0/0/sd0000000/kyo-kara.xyz/.htpasswd
これで試してみて、ベーシック認証画面が出れば完了です。
それでもだめなら、お名前サーバーのアクセス制限をかけたままじゃないか?
ベーシック認証をかけるためのプラグインをインストールしていないか?
確認してみてください。
それでもダメな場合は、お名前サーバーをやめるというのも一つの手ですがw
http://qiita.com/yuwaita/items/e406c645ae8d0cc3c3fa
http://kouritsu.biz/activate-basic-authentication-on-onamae-sd-server/
いやー地味に大変だった。
ホントですねwとても助かりました。ありがとうございます!