1つのサイトに複数アプリ

Cakeって基本はDocrootにアプリを置くと素直に動作するようになってるみたいだけど、
1つのサイトにCakeを1つ置いておいて、複数アプリを動作させたいときに困る気がする。
特に、httpd.confにAliasを切って振り分けたいのだ・・・
appフォルダをalias指定すればいいけど、余計なフォルダが公開されてしまうので
できればapp/webrootだけを公開したい。
で、やってみたら動いたのでメモ。

httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

Alias /appA "C:/cakephp/appA/webroot/"
<Directory "C:/cakephp/appA/webroot/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Alias /appB "C:/cakephp/appB/webroot/"
<Directory "C:/cakephp/appB/webroot/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

appA/webroot/.htaccess

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /appA <= 「この行を追加」
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

appB/webroot/.htaccess

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /appB <= 「この行を追加」
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

appA/webroot/index.php
appB/webroot/index.php

(省略)
    if (!defined('ROOT')) {
	//define('ROOT', 'FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
	//You should also use the DS define to seperate your directories
	define('ROOT', dirname(dirname(dirname(__FILE__))));
    }
    if (!defined('APP_DIR')) {
	//define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
	define('APP_DIR', basename(dirname(dirname(__FILE__))));
    }
    // ここから追加
    if (!defined('WEBROOT_DIR')) {
        define('WEBROOT_DIR', basename(dirname($_SERVER['SCRIPT_NAME'])));
    }
    // ここまで追加
(省略)

要はwebrootが指定できればいいみたい。
上記の場合、http://localhost/appA/ or http://localhost/appB/
それぞれのwebrootフォルダを指すようになるので一件落着。