さる方のホームページ制作をお手伝いしていたところ、お名前.comのレンタルサーバーで、Basic認証が必要なことがありました。
レンサバだから、サーバー管理画面から認証設定できるはず…と思って軽く考えてたら、なかなか設定がうまく行かず、結構ハマってしまいました。ということでうまくいく設定の備忘録です。
サーバーのコントロールパネルで設定する方法
まずオーソドックスに、コンパネでやる方法から。
お名前.comのコンパネにログインしてから、「アクセス制限」をクリックします。
そこから新規作成をクリック。
Basic認証を指定したいフォルダパスと認証パスを入力します。
ね?簡単でしょ?といいたいところですが、注意点があります。
注意点(私が完全にハマったところです)
ひとことで言うと、.htaccessがサーバーにある場合には機能しなくなります。
WordPressのパーマリンクを設定すると.htaccessが生成されるので、パーマリンクを設定したタイミングでBasic認証が外れてしまうのです。
たしかにお名前.comのヘルプに書いてありました。
私はここでハマりました。気をつけましょう。
WordPressでパーマリンクを設定する場合は、下記の方法でBasic認証を行えます。
htaccessとhtpasswdで設定する方法
これは普通どおりやればOKです。
つまり、
- .htpasswdにアイパスを書き
- .htaccessにBasic認証する旨を書く
- .htaccessに、.htpasswdへのサーバールートからの絶対パスを記載する
といった方法です。しかし、ここでネックになるのが、
ホームからの絶対パスっていっても、どうやって調べりゃいいんだよ…
という問題です。これで結構ハマりました。(そもそも.htaccessと.htpasswdによる認証ってどうすれば良いの?って方は、ググってみてください)
で、上記の問題を解決するのが、
ルートサーバーからのパスを出力するPHPファイルを配置して、ブラウザでアクセスする
という方法です。
まず、ローカルで下記の内容を記述したphpファイルを置きます。
<?php echo __FILE__; ?>
名前は何でもOKです。私は「まず動作テストから」という観点でtest.phpという名称にしました。
それをドメインのrootディレクトリに配置します。
これでOKです。
アドレスバーに、
自分のドメイン名/test.php
と入力すると、下記の通りtest.phpへの絶対パスが以下のとおり表示されます。
それを.htaccessのpathに記載すればOKです。うまくいった時の.htaccessの記述内容は下記の通りです。(一部hogehogeにしてます)
AuthUserFile /export/sdhogehoge/www/jp/r/e/gmoserver/hogehoge/hogehoge.com/.htpasswd AuthGroupFile /dev/null AuthName "Please Enter your ID & Password" AuthType Basic require valid-user <Files ~ "^.(htpasswd|htaccess)$"> deny from all </Files>
いやー地味に大変だった。