В CakePHP, можно ли иметь внутренние и внешние маршруты?

голоса
1

Приложение Facebook размещается на моем сервере, скажем, в http://server.com/projects/fbapp/ , но только когда - либо рассматривается в Facebook на, например, http://apps.facebook.com/fbapp/ .

Использование CakePHP это представляет проблему, - должны быть маршруты с префиксом «/ проект / fbapp» или просто «fbapp»?

Это проблема, потому что маршруты используются не только для маршрутизации входящих запросов, но и для создания ссылок (и формы действия и т.д.).

Как ляп, у меня теперь есть две маршрутизации инструкции для каждого маршрута:

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

С первым не требует префикса из строки я включил в bootstrap.php:

Configure::write('App.base', '/fbapp');

Который стартует в ходе обратной маршрутизации операций.

Мой вопрос заключается в том, есть ли более элегантный способ сделать это? Это, кажется, очень некрасиво, и я уверен, что это не очень Cakey.

Задан 13/05/2009 в 00:16
источник пользователем
На других языках...                            


3 ответов

голоса
1

Крест размещения моего комментария по запросу:

Не Будет ли (апач) переписывают трафика от Facebook будет наиболее элегантное решение? Ваша внутренняя машина будет иметь дело только с одним путем, и если вы хотите интегрировать приложение с другой службой / платформами на более позднем этапе, вы должны были бы только добавить еще одно правило перезаписи, а не возиться с самим приложением.

Ответил 18/05/2009 в 03:44
источник пользователем

голоса
1

Я буду идти, основываясь на Ask Apache и некоторые правила , я положил на месте на несколько старых проектов. Я думаю , поместив его в файл .htaccess в вашем вебсервера будет делать трюк (но это предположение).

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/projects/fbapp/pages.*
RewriteRule ^/projects/fbapp/pages/(*)$ /pages/$1 [L]

Выше должен (если бы я сделал это правильно) переписать любой запрос , соответствующий http://server.com/projects/fbapp/pages/ * для http://server.com/pages/ * т.е. http://server.com/ проекты / fbapp / страницы / Foo => http://server.com/pages/foo .

Редактировать Найдено это отправило в разделе Apache.

Ответил 18/05/2009 в 21:38
источник пользователем

голоса
1

Вам не нужно делать что - либо вообще! Торт будет заботиться о базовом URL для вас, так что вам не нужно дублировать маршруты, и не заботиться о базовом URL. Что вам нужно сделать , это маршрут вашего родственника URL вместо использования projects/fbapp/, или любой префикс вы хотите обрабатывать:

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

Вот как я обрабатывать все запросы в моем приложении, которое я развертываюсь под http://www.example.com, в то время как локально у меня под http://localhost/workspace/example.com/trunk/deploy. Он работает как шарм в обеих средах.

Ответил 22/05/2009 в 17:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more