セッションIDが付いた状態でトップページへアクセスすると、正常にアクセスできないことが判明。

http://example.com/?CAKEPHP=XXXXXXXX

こんな感じのURL。

どうやら、dispatcher.phpのuri()というメソッド内で、URLを正規表現処理してるところが正しくない模様。

> $uri = preg_replace('/^(?:\/)?(?:index\.php)?(?:\/)?(?:\?)?(?:url=)?/', '', $uri);

この行で (?:\?)? が ? を削除してしまっているせいで、本来

http://example.com/?CAKEPHP=XXXXXXXX

とアクセスするところが

http://example.com/CAKEPHP=XXXXXXXX

になってしまっている。

正規表現困った・・・。

という事で、とりあえず URL が /? で始まっていれば〜的な分岐処理で一時的に対応しておくことにする。

if( preg_match( "/^\/(\?.*)/", $uri, $matches ) )
{
 $uri = $matches[1] ;
}
else
{
 $uri = preg_replace('/^(?:\/)?(?:index\.php)?(?:\/)?(?:\?)?(?:url=)?/', '', $uri);
}