高卒の私が28歳から未経験でWEBデザイナーになった体験談

お名前サーバーでWordPressサイトのベーシック認証で手間取った話

先日、クライアントにお見せするテストサイトに、ベーシック認証をかけてほしいという要望があったのですが、自社で使用しているステージングサーバー、お名前.comのSD-11プランのコントロールパネルからかけてみることにしました。

ですが、かけてみてもサイトが普通に表示されてしまいます。
ブラウザを変えてみてもダメでした。

どうやらサイト表示用URLを変更するために作られる、.htaccessがアクセス制限をかけたいディレクトリに出来てしまうことが原因のようです。

.htaccessファイルを削除してしまえば、お名前サーバーのアクセス制限機能が使えるのですが、それだと、//ドメイン名/wp というURLになってしまいますので、この機能を使わずに、別の方法でかけることにしました。

まぁ、それが一般的なベーシック認証のかけ方なのですがw

必要なものは、既にディレクトリにある.htaccessファイルと、パスワードを格納しておく.htpasswdファイルです。

順序的にはこんな感じです。

①.htpasswdファイルを作成し、サーバーにアップする。(.htaccessがある場所と一緒でOK)

②.htaccessにベーシック認証をかけるための記述をする。

以上です。

とても簡単に思えますが、2時間ほどハマってしまいましたので、なるべくわかり易く説明いたしますね。

 

.htpasswdを作成する。

まず、IDとパスワードを決めて、それを格納するためのファイルを作ります。それが.htpasswdファイルです。

.htpasswdですが、パスワードを暗号化して作成するのが一般的です。そのようなツールはたくさんあるみたいなんですが、私はコレを使いました。

http://www.luft.co.jp/cgi/htpasswd.php

IDとパスワードを入力して、「生成」ボタンを押すだけで、IDと紐づけた暗号化されたパスワードが表示されます。

それを、メモ帳や秀丸などのテキストエディタにコピペして、.htpasswdという名前で保存します。

文字コードはUTF-8で、.txtなどの拡張子は付けずに保存してください。

.htpasswdをサーバーにアップする

作成した.htpasswdファイルをアップする場所ですが、基本的には.htaccessファイルがある場所にアップしてOKです。

 

.htaccessファイルにベーシック認証用の記述をする

お名前サーバーで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とても助かりました。ありがとうございます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Recommend
No articles