3月 222011
 
シェアする

 

ユーザ毎に表示する内容を変更したい!

Webページへアクセスするユーザ毎に表示する内容を変更したい場合、以下の条件が必要となる。

①ユーザを識別させるために「Basic認証」の設置
②リダイレクトさせるために「mod_rewrite」の利用

まずは上記①「Basic認証」の設置から行ないます。

設置には
.htpasswd」というパスワードファイルと
.htaccess」という設定ファイル を利用します。

まずは以下のコマンドを実行しパスワードファイルを作成しましょう。
以下の例では「/var/www/html/.htpasswd」というファイルを作成し、ユーザ「user1」を追加しています。

パスワードファイルの作成
# htpasswd -c /var/www/html/.htpasswd user1
New password: パスワード入力(不可視)
Re-type new password: パスワード再入力(不可視)
Adding password for user user1
#
パスワードファイルの確認
# cat /var/www/html/.htpasswd
user1:暗号化済みパスワード
#

既に作成済みのパスワードファイルにユーザを追加したい場合には、「-c」のオプションは必要ありません。

# htpasswd /var/www/html/.htpasswd user1

ここまででパスワードファイルの作成が完了しました。
次に、設定ファイルになる「.htaccess」というファイルをWeb公開しているディレクトリ(DocumentRoot)に設置します。公開しているディレクトリが「/var/www/html/」の場合には、「/var/www/html/.htaccess」として以下の記述を設定してください。
「AuthUserFile」の場所は、適時作成されたパスワードファイルのパスを設定してください。

## .htから始まるファイルを閲覧出来ないように設定
<Files ~ "^\.ht">
deny from all
</Files>
 
## Basic認証の設定
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
##

ここまでで、登録したユーザでの認証が行われるようになっています。一度公開されているWebページへアクセスを試してみてください。以下のような画面で認証が求められると思います。

Basic認証画面

 

次に上記②「mod_rewrite」の設定を行ないます。

はじめに、「mod_rewrite」モジュールがロードされていることを確認しておきましょう。「LoadModule~」の行がコメントアウトされている場合には、コメントアウトを解除しApacheを再起動してください。

(有効になっている場合)
# grep "LoadModule" httpd.conf | grep mod_rewrite
LoadModule rewrite_module modules/mod_rewrite.so
#

さて、上記確認が完了したら先ほど設定した「.htaccess」ファイルにリダイレクトを行なう設定を追加します。

## Rewrite Module
<IfModule mod_rewrite.c>
RewriteEngine on

## Rewrite Conditions & Rule for "user1"
RewriteCond %{LA-U:REMOTE_USER} ^user1$
RewriteCond %{REQUEST_URI} !^/user1/
RewriteRule ^/(.*) /user1/$1
</IfModule>
##

上記「RewriteCond %{REQUEST_URI} !^/user1/」の記述が無いと、転送がループしてしまいますので注意してください。

以上で設定が完了となりましたので、インターネットブラウザのクッキーと一次ファイルを削除し、インターネットブラウザを再起動しアクセスしなおしてください。もちろん、上記設定の場合だと「/user1」というディレクトリがある必要がありますので、お忘れなく。

 

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ