Vlastni router a redirect v metode match
- Kurtas
- Člen | 109
Ahoj,
potreboval bych poradit s nasledujici veci:
Mam tabulku (articles) s clanky a dalsi tabulku (urls) s URL pro dany clanek. Pokud user zmeni URL clanku, zalozi si novy zaznam v tabulce urls s priznakem ze je aktualni a puvodni url se oznaci ze uz neni aktualni.
Dale mam vlastni router ktery saha do DB a hleda jestli pro zadane URL existuje clanek, ale potreboval bych pokud prijde HTTP request na URL ktere jiz neni aktualni abych v metode match zavolal 301 redirect na aktualni url clanku. … A ja zkratka nevim jak v Nette zavolat redirect kdyz nemam presenter :(
Zkratka tak abych sdelil vyhledavacum ze URL bylo zmeneno.
Snad jsem to jasne popsal a nekdo mi pomuze
Predem moc diky
Mira
- enumag
- Člen | 2118
Mám pocit že tohle řeší kanonikalizace URL adres. Mělo by to fungovat tak že pokud vygeneruješ starou URL na nějaký článek tak Nette si na ten článek zkusí URL vytvořit a pokud není stejná jako ta aktuální tak přesměruje na tu aktuální. Nevím jistě zda je to kompatibilní s vlastními routery ale teoreticky by vnitřní implementace routeru neměla mít vliv.
- enumag
- Člen | 2118
Routa není neplatná nikdy, jde jen o to, že ta stará bude mít nižší prioritu než ta nová (v definici rout bude později). Když přijde požadavek, matchne až ta stará routa. Pak se pustí kanonikalizace, tehdy se vygeneruje URL adresa, ale už podle nové routy. Nette uvidí že ta URL je jiná a provede přesměrování na tu novou. Nevidím důvod proč by to pro vlastní router nemělo fungovat.