Во-первых, благодаря наличию Cake в подкаталоге (/ cake125), я думаю, вам может понадобиться подключить действие / cake125 /: controller /:, а не то, как оно у вас есть. Не 100%, хотя; Cake может быть достаточно надежным, чтобы справиться с этим вариантом использования. Если у вас странные ошибки, я бы это проверил.
На мой ответ:
Я думаю, вы несколько не понимаете, как работает класс Router. Вы подключаете URL, а не относительные пути файловой системы, используя Router :: connect. По умолчанию (который вы, возможно, стерли, но исправить это довольно просто), Cake направит запросы к / pages / * в функцию PagesController :: display (), передав ей один аргумент (действие, указанное в запросе http).
Итак, чтобы контроллер страниц сопоставил / pages / one с элементом app / views / pages / one.ctp, просто убедитесь, что следующая строка (по умолчанию, т. Е. Cake обычно имеет эту настройку) находится в конфигурации маршрутов (и убедитесь, что строки над ним не соответствуют этому шаблону):
Router::connect( '/pages/:action', array( 'controller' => 'pages', 'action' => 'display', :action);
Это должно гарантировать, что PagesController :: display ($ action) вызывается во время запроса, что является (я думаю) тем, что вы ищете.
Если ваша CMS генерирует ссылки для предварительного просмотра, которые вы хотите правильно перенаправить, я бы предложил добавить новый маршрут. Например, если ваша CMS генерирует ссылки наподобие http://somesite.com/cms/preview/newly_edited_file,, вы можете направить ее так:
Router::connect( '/cms/preview/:action', array( 'controller' => 'pages', 'action' => 'display', :action );
По второму вопросу: имейте правило по умолчанию в ваших маршрутах (сделайте его последним правилом и сделайте так, чтобы оно совпадало *). Затем он будет настроен на маршрутизацию всех не найденных запросов к вашей паре контроллер / действие в соответствии с запросом. Попробуйте это:
Router::connect( '/:action', array( 'controller' => 'pages', 'action' => 'display', :action );
Большая оговорка это нарушит ваши существующие маршруты. Вам нужно будет вручную добавить запись для каждого из ваших существующих контроллеров (Router :: connect ('/ users /: action', ... и т. Д.). Если вы гуглите вокруг, вы можете найти некоторые умные решения, такие как сгенерировать этот список во время выполнения для вас. Но вам нужно будет обратиться к «нормальной» маршрутизации, как только вы добавите эту ловушку (и убедитесь, что ваша ловушка находится в конце файла маршрутизации).
Кроме того, если вы хотите проанализировать URL-адреса, такие как /test.html, просто добавьте вызов Router :: parseExtensions (...), чтобы Cake зарегистрировал .html в качестве расширения для его анализа. Обратитесь к руководству по этой функции для получения дополнительной информации.