前回は、.htaccessファイル設定でWeb公開ディレクトリを変更する方法、という記事をまとめました。今回はさらにクライアントがもつcookie値によって公開ディレクトリを変更する方法についてまとめます。
.htaccess設定ファイルについては前回の記事を参照してください。
構成の確認
変更前〜変更後
今回もウェブサーバーの環境が以下のよう構成が整っていると仮定します。
ウェブサイトのURL:
http://example.com/
サーバ上のディレクトリ(公開ディレクトリ):
/web/
これを、書き込まれているCookie値によって以下のよう構成を変える変更を行います。
ウェブサイトのURL:
http://example.com/
サーバ上のディレクトリ(公開ディレクトリ):
/web/version1/
または
サーバ上のディレクトリ(公開ディレクトリ):
/web/version2/
準備として新たに version1 と version2 というディレクトリフォルダを作成します。この version1 と version2 ディレクトリをCookie値によって公開ディレクトリに変更されるよう設定を行います。
設定作業
Cookieの書き込みプログラム
先にCookieの書き込みを行うプログラムコードを準備します。
今回は、PHPを用いて以下のように作成します。
プログラムファイル名:
setcookie.php
プログラム内容:
このプログラムでは、GETで渡された version という名前のパラメータを受け取りその値を Cookie に書き込むというプログラムになっています。
また、version パラメータが渡って来なかった場合は、Cookieの内容を消去するというようにもなっています。
処理完了後yahooにリダイレクトするようになっています。
作成したファイルは、
/web/setcookie.php
に配置します。
プログラムの実行確認
プログラムにアクセスし、Cookieの書き込みを実行してみます。
以下のよう、versionパラメータをつけてプログラムにアクセスし実行してみます。
http://example.com/setcookie.php?version=version1
結果、
update cookie value sucecss.
と表示されれば、成功です。
これで、Cookieに version という名前で値、version1 が書き込まれました。
.htaccess ファイル記述
つづいて、.htaccessファイルの準備です。
.htaccess というファイル名でテキストファイルを作成します。
そして、以下のよう記述します。
RewriteEngine onRewriteCond %{HTTP_COOKIE} version=version1 [NC]RewriteCond %{REQUEST_URI} !setcookie.php$RewriteCond %{REQUEST_URI} !/version1RewriteRule ^(.*)$ version1/$1 [L]RewriteCond %{HTTP_COOKIE} version=version2 [NC]RewriteCond %{REQUEST_URI} !setcookie.php$RewriteCond %{REQUEST_URI} !/version2RewriteRule ^(.*)$ version2/$1 [L]
※最終行に改行が必要 ファイルをアップロードします。 アップロードする場所は、もともとの公開ディレクトリ直下です。
/web/.htaccess
確認
設定が正しく反映されれば、 http://example.com/ にアクセスした際に、 /web/version1/ の中のものが表示されるはずです。
それでは今度は setcookie.php に、versionパラメータを値、version2 としてアクセスし実行してみます。
http://example.com/setcookie.php?version=version2
すると今度は、http://example.com/ にアクセスすると、 /web/version2/ の中のものが表示されるはずです。
※ブラウザのキャッシュによってversion1が表示される場合があります。
終わりに
今回紹介した、 .htaccess の記述方法で version1 の場合と version2 の場合として記述がパターンになっているのが分かると思います。
追加で記述することで他のCookie値、ディレクトリ名の設定も簡単に行えます。