V CakePHP, je možné mít vnitřní a vnější cesty?

hlasů
1

Facebooku aplikace je umístěn na svém serveru na, řekněme, http://server.com/projects/fbapp/ , ale jen někdy viděn v Facebook při, například, http://apps.facebook.com/fbapp/ .

Pomocí CakePHP to představuje problém - je třeba cesty s předponou „/ projekt / fbapp“ nebo jen „fbapp“?

Je to problém, protože cesty jsou využívány nejen pro směrování příchozí požadavky, ale také pro vytváření vazeb (a tvoří akce atd.)

Jako kludge, mám teď dvě směrování instrukcí za trase:

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

Přičemž první nevyžadující předponu kvůli řadě jsem zahrnuty do bootstrap.php:

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

Který kopy během reverzní směrování provozu.

Moje otázka zní, zda existuje více elegantní způsob, jak to udělat? To se zdá být velmi ošklivá a jsem si jistý, že to není moc cakey.

Položena 13/05/2009 v 00:16
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Cross odeslání mé příspěvky na požádání:

By ne (apache) přepsání provoz z Facebooku být nejelegantnější řešení? Vaše interní stroj bude muset jednat pouze s jednou cestou, a pokud byste chtěli integrovat aplikace s jinou službou / plošině k pozdějšímu datu, by máte pouze přidat další přepisovací pravidlo, spíše než probírat se samotnou aplikací.

Odpovězeno 18/05/2009 v 03:44
zdroj uživatelem

hlasů
1

Budu muset jít, založený na Ask Apache a některá pravidla jsem zavedeny na několika starých projektů. Myslím, že jeho uvedení do souboru .htaccess ve vašem webroot by stačit (ale to je odhad).

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

Výše uvedené by mělo (pokud jsem to udělal vpravo) přepsat jakýkoliv požadavek odpovídající http://server.com/projects/fbapp/pages/ * na http://server.com/pages/ * tj http://server.com/ projekty / fbapp / stránky / foo => http://server.com/pages/foo .

Editovat Nalezené to zveřejněny v sekci Apache.

Odpovězeno 18/05/2009 v 21:38
zdroj uživatelem

hlasů
1

Nemusíte dělat vůbec nic! Dort se bude starat o základní adresa URL pro vás, takže se nemusíte kopírovat trasy, ani se postarat o základní adresa URL. Co musíte udělat, je cesta váš příbuzný URL namísto použití projects/fbapp/, nebo co prefix chcete zpracovat:

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

Takhle jsem zpracovávat všechny požadavky v mé aplikaci, která nasadit pod http://www.example.com, zatímco lokálně Mám to pod http://localhost/workspace/example.com/trunk/deploy. Funguje to jako kouzlo v obou prostředích.

Odpovězeno 22/05/2009 v 17:45
zdroj uživatelem

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