Dans CakePHP, est-il possible d'avoir des itinéraires internes et externes?

voix
1

Une application Facebook est hébergé sur mon serveur, disons, http://server.com/projects/fbapp/ , mais ne jamais vu dans Facebook à, par exemple, http://apps.facebook.com/fbapp/ .

En utilisant CakePHP cela pose un problème - doit être préfixé avec des itinéraires « / projet / fbapp » ou tout simplement « fbapp »?

Il est un problème parce que les routes sont utilisées non seulement pour le routage des demandes entrantes, mais aussi pour générer des liens (et forment des actions, etc.).

En tant que bidouille, j'ai maintenant deux instructions de routage par route:

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

Avec le premier ne nécessitant pas un préfixe en raison d'une ligne que j'ai inclus à bootstrap.php:

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

Ce qui entre en jeu lors des opérations de routage inverse.

Ma question est de savoir s'il y a une façon plus élégante de le faire? Cela semble très laid et je suis sûr que ce n'est pas très Cakey.

Créé 13/05/2009 à 00:16
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
1

Croisez affichage mon commentaire sur demande:

Ne serait-un (apache) Réécriture du trafic de facebook être la solution la plus élégante? Votre machine interne n'aurait à faire face à un chemin, et si vous voulez intégrer l'application avec un autre service / plate-forme à une date ultérieure, vous ne devez ajouter une autre règle de réécriture plutôt que de jouer avec l'application elle-même.

Créé 18/05/2009 à 03:44
source utilisateur

voix
1

Je vais avoir un aller, sur la base Demandez Apache et quelques règles que je l' ai mis en place sur quelques anciens projets. Je pense le mettre dans le fichier .htaccess dans votre Webroot ferait l'affaire (mais c'est une supposition).

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

Il devrait être ainsi (si je l' ai fait à droite) réécrire toute demande correspondant http://server.com/projects/fbapp/pages/ * à http://server.com/pages/ * c. -à- http://server.com/ projets / fbapp / pages / foo => http://server.com/pages/foo .

Modifier trouvé cette posté dans la section Apache.

Créé 18/05/2009 à 21:38
source utilisateur

voix
1

Vous ne devez rien faire du tout! Gâteau se chargera de l' URL de base pour vous, afin que vous n'avez pas besoin de dupliquer les routes, ni prendre soin de l'URL de base. Ce que vous devez faire est d'acheminer votre URL relative au lieu d'utiliser projects/fbapp/, ou quel que soit le préfixe que vous voulez gérer:

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

Voilà comment je traiter toutes les demandes dans mon application, que je sous déployer http://www.example.com, alors que j'ai localement sous http://localhost/workspace/example.com/trunk/deploy. Il fonctionne comme un charme dans les deux environnements.

Créé 22/05/2009 à 17:45
source utilisateur

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