Если вы строите путь одним из следующих способов:
$continue = Router::url(array('controller' => 'admin', 'action' => 'posts'));
$continue = Router::url('/admin/posts');
, затем Router::url
будет предшествовать базовый путь /application
. Затем, если вы снова вызовете Router::url
для полученного URL (или redirect
к нему), Router::url
снова добавит его. Вот как это работает, и вы ничего не можете с этим поделать.
В действительности, URL /application/admin/posts
является неоднозначным, но CakePHP читает его как controller=application
, action=admin
, а первый аргумент - posts
.
Единственные способы обойти это:
Используйте абсолютный URL:
$continue = Router::url(array('controller' => 'admin', 'action' => 'posts'), true);
Или убедитесь, что Router::url
вызывается только один раз, например ::1010*
$continue = '/admin/posts';
Или после входа в систему
$pathtoredirect = FULL_BASE_URL . $this->params['url']['continue'];