Router redirectuje na nesmysl při subdoméně
- Jiří Nápravník
- Člen | 710
Mám problémy s routerem. Mám jej nadefinovaný jako je níže. Když jdu na media.example.com/… tak se hitne první pravidlo a vše ok.
Ale pokud jdu na example.com, očekával bych hitnutí druhého pravidla, protože už nesedí ani ta subdoména. Jenže ono mě to nasměruje na něco takového: http://media.example.com/…nt/homepage/
Vůbec nechápu…
public function createRouter()
{
$router = new RouteList();
$router[] = new Route('//media.example.com/<module>/<presenter>/<action>', 'Dashboard:default');
$router[] = $app = new RouteList('App:Front');
$app[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
- David Matějka
- Moderator | 6445
muze za to kanonizace
reseni:
- vypnout kanonizaci
- (lepsi) nejak upravit routy, aby app request vytvoreny druhou routou nepasoval i na prvni routu. napada me par moznosti, nejjednodussi je asi pridat FILTER_OUT na module a pro App module vracet NULL. pripadne by slo udelat z ty (sub)domeny persistentni parametr
- Jiří Nápravník
- Člen | 710
Díky za reakci. JJ, dělá to kanonizace, to jsem při debugování vyzjistil, nicméně to se mi hodně líbí a nechtěl bych o ní přijít.
Tím filtrem to řeším zatím podobně jako píšeš…
Subdoména jako persistentní parametr moc teď nechápu jak myslíš. Jen tam bude těch subdomén několik (dynamických), tak nevím ani zda by to bylo realizovatelné.
- David Matějka
- Moderator | 6445
imho by melo jit neco jako:
$router[] = new Route('//<domain media\.example\.com>/<module>/<presenter>/<action>', 'Dashboard:default');
//a v presenteru
class FooPresenter extends BasePresenter
{
/** @persistent */
public $domain;
}
(to persistentni $domain by bylo v presenterech pro tu prvni routu – tedy asi v nejaky BasePresenteru)
a jelikoz by presentery v App:Front nemely ten parametr $domain, neodpovidala by prvni routa pri kanonizaci…
- Jiří Nápravník
- Člen | 710
Díky za náčrt, ale pravděpodobně zůstanu u toho filtru, přijde mi to takové čistší