ローカルの開発環境をVirtualHostで複数用意する

CakePHPで複数のローカル開発環境を用意するには様々な方法があると思います。
Apacheで代表的なのはmod_rewriteを使って、documentrootに配置してしまう、Aliasを使う、VirtualHostを使うなどでしょうか。

CakePHPを使っていればHelperがURLを設置場所に合わせて出力してくれますが、
やはり本番に近い状態で開発やテストは行いたいものです。

そこでApacheのVirtualHostを使い設定してみます。

<VirtualHost 127.1.0.20:80>
    DocumentRoot "C:\eclipse\workspace\cakephp-project\app\webroot"
    ServerName 127.1.0.20
    ServerAlias 127.1.0.20
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

この場合にはブラウザで127.1.0.20にアクセスするとwebrootにアクセスします。

127.x.x.xはローカル・ループバック・アドレスと呼ばれるIPアドレスです。

ローカル・ループバック・アドレス(127.0.0.1)とは?

127.0.0.1~127.255.255.254

参照記事にもある通り、この範囲であれば自由に使えます。
なのでCakePHPのプロジェクトの数だけVirtualHostを追記すれば良いだけです。

IPだけだと、何だか分かりづらい。と言う場合にはhostsファイルを利用して擬似ドメインを作ることができます。

Windows7なら C:\Windows\System32\drivers\etc\hosts

127.1.0.20 app

と記述してブラウザにappでアクセスすると指定したIPを参照します。
これはローカルDNSのような役割をしていて、プロバイダから通知されているグローバルなDNSより先に参照されます。
127.0.0.1 が localhost でアクセスできる理由でもあります。

これには実在するドメインも記述できるので、本番前にテストも可能です。
ただし、終わった後に消しておかないとローカルを参照し続けるので注意が必要です。

余談ですが、hostsファイルを書き換えて本物そっくりな偽サイトに誘導し、情報を盗むようなスパイウェアやウィルスも存在するようです。