cookie値でWeb公開ディレクトリを切り替える方法

cookie値でWeb公開ディレクトリを切り替える設定を、.htaccessファイルにて行う方法についてまとめます。

前回は、.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の内容を消去するというようにもなっています。
作成したファイルは、

/web/setcookie.php

に配置します。

プログラムの実行確認

プログラムにアクセスし、Cookieの書き込みを実行してみます。
以下のよう、versionパラメータをつけてプログラムにアクセスし実行してみます。

http://example.com/setcookie.php?version=version1

結果、

update cookie value sucecss.

と表示されれば、成功です。
これで、Cookieに version という名前で値、version1 が書き込まれました。

.htaccess ファイル記述

つづいて、.htaccessファイルの準備です。
.htaccess というファイル名でテキストファイルを作成します。
そして、以下のよう記述します。

RewriteEngine on
RewriteCond %{HTTP_COOKIE} version=version1 [NC]
RewriteCond %{REQUEST_URI} !setcookie.php$
RewriteCond %{REQUEST_URI} !/version1
RewriteRule ^(.*)$ version1/$1 [L]
RewriteCond %{HTTP_COOKIE} version=version2 [NC]
RewriteCond %{REQUEST_URI} !setcookie.php$
RewriteCond %{REQUEST_URI} !/version2
RewriteRule ^(.*)$ 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値、ディレクトリ名の設定も簡単に行えます。

Related posts