ユーザ毎に表示する内容を変更したい!
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ページへアクセスを試してみてください。以下のような画面で認証が求められると思います。
次に上記②「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」というディレクトリがある必要がありますので、お忘れなく。
コメント