Я предполагаю, что у меня тот же сценарий: для разработки сайт доступен по адресу localhost / cake, в результате чего в производственном процессе сайт разворачивается в корневом каталоге example.com. В шапке я установил:
<base href="<?php echo $base_url ?>" />
* * 1004
в AppContoller::beforeRender()
Я установил:
$this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
.
Это прекрасно работает для всего, кроме JS (таким образом, AJAX), поскольку игнорирует base_url.
Поэтому у меня есть обходной путь (использует jQuery, но легко заменить без него):
forUrl = function(url) {
return $('base').attr('href')+url.substr(1);
}
login = function() {
$.post(forUrl('/ajax/profileDiv'), $('#profile-login-form').serialize(),
function(data) {
(...)
});
}