CakePHP 1.3 вопрос маршрутизации - PullRequest
0 голосов
/ 28 марта 2011

Я создаю статический / динамический смешанный сайт.

  1. Если пользователь заходит на xxx.com/about, я хочу использовать контроллер страниц, чтобы показать about.ctp.кажется, что это сделано как / pages / about, но если я хочу скрыть / pages, я должен написать так:

Router :: connect ('/ about', array ('controller' => 'pages', 'action' => 'display', 'about'));

для всех статических страниц?или любой другой способ?

  1. некоторые статические страницы могут быть иерархическими.как / about / history, / about / address, ... Я не знаю, какой самый простой способ для обслуживания позже, например, должен ли я сделать контроллер без модели для каждого статического каталога или использовать контроллер страницы и сохранить всефайлы в представлениях / страницах /.любой совет?

1 Ответ

1 голос
/ 28 марта 2011

Если вы не против иметь расширение .html в конце ваших URL-адресов и имеете контроль над перезаписью вашего сервера (mod_rewrite), вы можете добавить правило перезаписи, которое будет напрямую обслуживать ваш статический контент и полностью обходить Cake. Это может быть самым простым для вас, так как все, что вам нужно сделать, это создать статический контент где-нибудь под webroot /

Например, вы можете добавить следующее для lighttpd (убедившись, что у вас загружен модуль mod_rewrite):

url.rewrite-once = (
    "^/.*\.html$"  => "$0"
)

Что означает: принимать каждый запрос, оканчивающийся на .html (например, «/page.html» или «example / page.html»), и обрабатывать его без разбора. $ 0 - это ключевое слово для исходного запроса.

Или, для Apache (либо в вашей конфигурации, либо в приложении / webroot / .htaccess) убедитесь, что ваши правила перезаписи начинаются с этих двух, которые говорят, что обслуживают любые существующие файлы или каталоги:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Обратите внимание, что это правило должно предшествовать вашему правилу перезаписи CakePHP, чтобы его сначала замкнуть накоротко и обслужить страницы, иначе маршрутизация CakePHP вступит во владение!

...