W CakePHP, jest to możliwe, aby mieć trasach wewnętrznych i zewnętrznych?

głosy
1

Aplikacja na Facebooku jest utrzymywana na mój serwer w, powiedzmy, http://server.com/projects/fbapp/ , ale jest tylko kiedykolwiek oglądany na Facebooku na, na przykład, http://apps.facebook.com/fbapp/ .

Korzystanie CakePHP to stanowi problem - Trasy powinny być poprzedzone „/ projekt / fbapp” lub po prostu „fbapp”?

Jest to problem, ponieważ trasy są wykorzystywane nie tylko do przekierowywania żądań przychodzących, ale także do generowania linków (i tworzą działania itp.)

Jako kludge, teraz mam dwie instrukcje routingu na trasie:

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

Z pierwszym nie wymagając prefiks z powodu linii podaję do bootstrap.php:

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

Który rozpoczyna się w trakcie operacji odwrotnych routingu.

Moje pytanie brzmi, czy istnieje bardziej elegancki sposób to zrobić? To wydaje się bardzo brzydki i jestem pewien, że to nie jest bardzo cakey.

Utwórz 13/05/2009 o 00:16
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
1

Crosspost mój komentarz na żądanie:

Nie An (apache) przepisać ruchu z facebook być najbardziej eleganckie rozwiązanie? Twój wewnętrzny maszyna miałaby do czynienia tylko z jedną ścieżką, a jeśli chciał zintegrować aplikację z innej usługi / platformy w późniejszym terminie, trzeba tylko dodać kolejną regułę przepisywania zamiast ingerować w samej aplikacji.

Odpowiedział 18/05/2009 o 03:44
źródło użytkownik

głosy
1

Muszę iść, na podstawie Zapytaj Apache i niektóre zasady Włożyłam w miejscu na kilka starych projektów. Myślę, że wprowadzenie go w pliku .htaccess w swojej webroot by rade (ale to przypuszczenie).

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

Powyższy powinny (jeśli to zrobiłem prawo) przepisać każdy wniosek dopasowanie http://server.com/projects/fbapp/pages/ * do http://server.com/pages/ * tj http://server.com/ projekty / fbapp / pages / foo => http://server.com/pages/foo .

Edytować Znaleziony to napisali w sekcji Apache.

Odpowiedział 18/05/2009 o 21:38
źródło użytkownik

głosy
1

Nie trzeba robić nic w ogóle! Ciasto zajmie bazowego adresu URL dla ciebie, więc nie trzeba powielać trasy, ani dbać o zawartości bazy. Co trzeba zrobić, to twój krewny trasy URL zamiast używania projects/fbapp/lub cokolwiek prefiks chcesz obsługiwać:

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

To w jaki sposób obsłużyć wszystkie żądania w mojej aplikacji, które wdrożyć mocy http://www.example.com, natomiast lokalnie mam go pod http://localhost/workspace/example.com/trunk/deploy. To działa jak czar w obu środowiskach.

Odpowiedział 22/05/2009 o 17:45
źródło użytkownik

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