お名前.comで.htaccessを用いてBasic認証する方法

basic-authentication-on-onamae

さる方のホームページ制作をお手伝いしていたところ、お名前.comのレンタルサーバーで、Basic認証が必要なことがありました。

レンサバだから、サーバー管理画面から認証設定できるはず…と思って軽く考えてたら、なかなか設定がうまく行かず、結構ハマってしまいました。ということでうまくいく設定の備忘録です。

サーバーのコントロールパネルで設定する方法

まずオーソドックスに、コンパネでやる方法から。

お名前.comのコンパネにログインしてから、「アクセス制限」をクリックします。

control-panel

 

そこから新規作成をクリック。

setting-entrance

 

 

 

 

 

 

 

 

 

Basic認証を指定したいフォルダパスと認証パスを入力します。

basic-help

ね?簡単でしょ?といいたいところですが、注意点があります。

注意点(私が完全にハマったところです)

ひとことで言うと、.htaccessがサーバーにある場合には機能しなくなります。

WordPressのパーマリンクを設定すると.htaccessが生成されるので、パーマリンクを設定したタイミングでBasic認証が外れてしまうのです。

たしかにお名前.comのヘルプに書いてありました。

onamae-help

私はここでハマりました。気をつけましょう。

WordPressでパーマリンクを設定する場合は、下記の方法でBasic認証を行えます。

htaccessとhtpasswdで設定する方法

これは普通どおりやればOKです。

つまり、

  • .htpasswdにアイパスを書き
  • .htaccessにBasic認証する旨を書く
  • .htaccessに、.htpasswdへのサーバールートからの絶対パスを記載する

といった方法です。しかし、ここでネックになるのが、

ホームからの絶対パスっていっても、どうやって調べりゃいいんだよ…

という問題です。これで結構ハマりました。(そもそも.htaccessと.htpasswdによる認証ってどうすれば良いの?って方は、ググってみてください)

で、上記の問題を解決するのが、

ルートサーバーからのパスを出力するPHPファイルを配置して、ブラウザでアクセスする

という方法です。

まず、ローカルで下記の内容を記述したphpファイルを置きます。

<?php
echo __FILE__;
?>

 名前は何でもOKです。私は「まず動作テストから」という観点でtest.phpという名称にしました。

それをドメインのrootディレクトリに配置します。

uploading-phpfile

これでOKです。

アドレスバーに、

自分のドメイン名/test.php

と入力すると、下記の通りtest.phpへの絶対パスが以下のとおり表示されます。

 output-of-phpfile

 

 

 

それを.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>

 いやー地味に大変だった。