În CakePHP, este posibil să aibă rute interne și externe?

voturi
1

O aplicație Facebook este găzduit pe serverul meu, să zicem, http://server.com/projects/fbapp/ , dar este privit numai vreodată în Facebook la, de exemplu, http://apps.facebook.com/fbapp/ .

Folosind CakePHP acest lucru prezintă o problemă - rute ar trebui să fie prefixate cu „/ proiect / fbapp“ sau pur și simplu „fbapp“?

Este o problemă, deoarece traseele sunt folosite nu doar pentru rutarea cererilor de intrare, dar, de asemenea, pentru generarea de link-uri (și forma de acțiuni etc.).

Ca kludge, acum am două instrucțiuni de rutare pe traseu:

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

Cu primul nu necesită un prefix, din cauza unei linii, am inclus la bootstrap.php:

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

Ceea ce începe în timpul operațiunilor de rutare reversibile.

Întrebarea mea este dacă există un mod mai elegant de a face acest lucru? Acest lucru pare foarte urât și eu sunt sigur că nu e foarte cakey.

Întrebat 13/05/2009 la 00:16
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Crucea a posta comentariul meu la cerere:

N-ar un (apache) rescriere traficului de la Facebook să fie soluția cea mai elegantă? Mașina dvs. internă ar trebui să se ocupe doar cu o singură cale, iar dacă ai vrut să integreze aplicația cu un alt serviciu / platformă de la o dată ulterioară, va trebui doar să adăugați o altă regulă de rescriere, mai degrabă decât încurcați cu aplicația în sine.

Publicat 18/05/2009 la 03:44
sursa de către utilizator

voturi
1

Voi avea un du - te, bazat pe Ask Apache și unele reguli le - am pus în aplicare pe câteva proiecte vechi. Cred că punerea în fișierul .htaccess în Webroot dumneavoastră ar face truc (dar asta e o presupunere).

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

Cele de mai sus ar trebui să (dacă am făcut - dreapta) rescrie orice cerere de potrivire http://server.com/projects/fbapp/pages/ * la http://server.com/pages/ * adică http://server.com/ proiecte / fbapp / pagini / foo => http://server.com/pages/foo .

Editați S - au găsit acest postat în secțiunea Apache.

Publicat 18/05/2009 la 21:38
sursa de către utilizator

voturi
1

Nu trebuie să faceți nimic! Tort va avea grijă de URL de bază pentru tine, astfel încât să nu trebuie să dubleze rutele, nici să aibă grijă de URL - ul de bază. Ceea ce trebuie să faceți este de a direcționa adresa URL relativă în loc de a folosi projects/fbapp/, sau orice prefix pe care doriți să se ocupe de :

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

Asta e modul în care mă ocup de toate cererile în aplicația mea, pe care am disloca sub http://www.example.com, în timp ce la nivel local am avea sub http://localhost/workspace/example.com/trunk/deploy. Acesta funcționează ca un farmec în ambele medii.

Publicat 22/05/2009 la 17:45
sursa de către utilizator

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