Vlastni router a redirect v metode match

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kurtas
Člen | 109
+
0
-

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
+
0
-

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.

Kurtas
Člen | 109
+
0
-

To vim ze to takhle dela uklasickych rout, ale ve vlastnim routeru musim teda aspon nejak rict ze je ta routa je neplatna. On si to podle sloupecku v DB „urls.actual = 1 / 0“ urcite nedomysli :)

enumag
Člen | 2118
+
0
-

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.

Kurtas
Člen | 109
+
0
-

Tak se musim omluvit, fakt to dela nette samo mel jsem chybu v methode contructUrl, nyni to opravdu samo presmerovana na platnou adresu. Opet me Nette velice positivne prekvapilo, diky vsem za pomoc ;)