Zákaz použití routy pro konkrétní presenter a Cachování redirectu 301 v browseru
- Dragonn
- Člen | 12
Ahoj,
stavím teď router a chtěl bych, aby většinu adres obsluhoval pouze jeden presenter, ale abych se vyhnul vyjmenovávání všech presenterů. Chtěl jsem vytvořit něco takového:
<?php
$router = new RouteList();
$router[] = new Route('admin[/<presenter>[/<action>[/<id>]]]', 'Admin:default');
$router[] = new Route('[<section>[/<device>[/<mac>]]]', 'Generate:default');
?>
Ale protože Nette automaticky přesmědovává na primární URL, tak při zadání „/init“ mě to přesměruje na „/admin/generate?section=init“. Chápu, proč se to tak děje, ale nevím, jak tomu zamezit. Ideálně bych si představoval nějakou možnost, jako přidat do první routy
<?php
$router[] = new Route('admin[/<presenter>[/<action>[/<id>]]]', 'Admin:default');
?>
… existuje něco takového?
Druhá věc, kvůli které píšu, je to, že při ladění routování jsem narazil na velice nepříjemnou věc, že můj browser (FF v19.0.2) cachuje redirect 301, který Nette standardně používá u OneWay rout a dvojznačnosti. Browser to nacachuje a odmítá se toho zbavit, takže když upravim routy, tak se ani nesnaží zeptat serveru na aktuální stav a rovnou přesměruje.
Jediný způsob, jak se mi povedlo se toho zbavit je kompletní promazání celé cache, ale to mi přijde jako zbytečně velký zásah. Nevíte, jak tohle řešit? Třeba vnutit pro testovací účely jiné přesměrování, které se necachuje (302?) nebo případně nastavit nějakou expiraci cache?
Nevím přesně jak dlouho to browser drží, ale restart okna nepomáhá a dokážu si docela živě představit, že budu chtít stránku později přesměrovat jinam, ale návštěvníci webu se k tomu novému vůbec nedostanou a nemůžu jim vysvětlovat, že si mají invalidovat cache browseru, aby jim dobře fungoval muj web …