Cakephp 2.4.5 Контроллер по умолчанию не загружается

Я новичок в CakePHP, пытаясь загрузить контроллер по умолчанию, как страницы

Это мой маршрут:

Router :: redirect (‘/’, массив (‘controller’ => ‘pages’, ‘action’ => ‘display’));

Router :: connect (‘/ pages / **’, массив (‘controller’ => ‘pages’, ‘action’ => ‘display’));

Когда я бегу «Http: //localhost/project/index.php« тогда работает нормально, но попробуйте «HTTP: // локальный / проект /« его не загружается контроллер по умолчанию (страницы)

Без htaccess & с htaccess это дает ту же проблему.

Это ошибка:

Класс контроллера ProjectController не найден.

Ошибка:

Запрашиваемый адрес «/project/index.php/project/» не найден в
этот сервер.

2

Решение

Вы работаете в подкаталоге, поэтому вы должны установить RewriteBase:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /project/index.php?url=$1 [QSA,L]
</IfModule
0

Другие решения

Согласно руководству пользователя CakePHP:

http://book.cakephp.org/3.0/en/development/routing.html#redirect-routing

Тебе стоит попробовать

Router::scope('/', function ($routes) {
$routes->redirect(
'/home/*',
['controller' => 'Articles', 'action' => 'view'],
['persist' => true]
// Or ['persist'=>['id']] for default routing where the
// view action expects $id as an argument.
);
})

Вместо Router :: redirect. Попробуйте этот метод один раз, возможно, проблема решена.

0

Его решено

Добавлен baseUrl в контроллере приложения:

function beforeRender(){
$this->set('baseUrl', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}

Удален App.baseUrl из Core.php:

Configure::write('App.baseUrl', env('SCRIPT_NAME'));

теперь работает нормально:
HTTP: // локальный / приложение /

0