2013年1月15日火曜日

hetemlの.htaccessでLocationディレクティブが使えない

お手伝いをしているプロジェクトでサーバにhetemlを使っていて、そこにCodeIgniter製のアプリをアップしたときにはまったことです。

やりたかった事 =>
アプリには管理画面があり、/admin以下のURLにはBasic認証を掛けたい。

URLが単純にディレクトリ構造に乗っ取っているのなら、hetemlの管理画面から掛けられるアクセス制限で事が足りるのですが、CodeIgniterはすべてのリクエストをルートのindex.php経由で処理するため、LocationディレクティブでのBasic認証記述が必要です。
そこでアプリケーションルートの.htaccessに以下のような記述を追加。

<Location admin="admin">
  AuthUserFile  /path/to/htppasswd/.htpasswd
  AuthGroupFile /dev/null
  AuthName "Admin Area"
  AuthType Basic
  require valid-user
</Location>

これで一件落着かと思いきや、アクセスしてみると500エラー画面が表示されました。
 この件について、hetemlのドキュメントは見当たらなかったのですが、結局Locationディレクティブを外してBasic認証を掛けると正常に動くことと、<Location /></Location>>だけの記述でもエラーになる事からhetemlではLocationディレクティブの使用を許可していないと思われます。

私のアプリでは/adminだけを別アプリ、別ディレクトリに格納して、そこにBasic認証を掛けることで対応しました。

0 件のコメント:

コメントを投稿