ysku's blog

ウェブ・無線通信・組み込みとか

Webサイトのアクセス制限【CakePHP 2.x .htaccess】

f:id:yusuke1581:20141112005253j:plain
サイトの開発段階では関係者以外のアクセスを制限します.
その方法を簡単にメモしました.

  • Apache Configファイル設定
# vi /etc/httpd/conf/httpd.conf

.htaccessを有効にします.

AllowOverride None

AllowOverride All

AllowOverrideをNoneにしてあると、今からアクセス制限を行う.htaccessファイルが完全に無視されてしまいます.
これはCakePHPの初期設定でAllにされているかと思います.

その後、設定ファイルを再ロードにより有効化します.

# /etc/rc.d/init.d/httpd reload
  • ログインユーザ設定

ログインユーザの登録

# htpasswd -b -c /etc/httpd.conf/.htpasswd [ユーザ名] [パスワード]

ここでは、
ユーザ名:hoge
パスワード:hogehoge
とします.

オプション

  • c:新しいパスワードファイルの作成
  • b:パスワードを、対話式入力ではなくて、コマンドライン引数として指定

ユーザ名が登録されているかを確認します

# cat /etc/httpd/conf/.htpasswd
  • パスワード制限設定

ここでは、/var/www/html/cakeディレクトリ以下のファイルに制限を加えていく場合を考えます.

/var/www/html/cakeディレクトリ内の.htaccessファイルを書き換えます.

変更前

<IfModule mod_rewirte.c>
     RewirteEngine on
     RewriteRule     ^$   app/webroot/              [L]
     RewriteRule     (.*)   app/webroot/$1        [L]
</IfModule>

変更後

AuthuserFile  /etc/httpd/conf/.htpasswd
AuthGroupFile    /dev/null
AuthName “secret page”
AuthType Basic
require user hoge  (先ほど登録したユーザ名)

<IfModule mod_rewirte.c>
     RewirteEngine on
     RewriteRule     ^$   app/webroot/              [L]
     RewriteRule     (.*)   app/webroot/$1        [L]
</IfModule> 

以上になります.