routy ve tvaru home.php?id=<pid> a home.php?name=<q> dělá jako by bylo definováno jen home.php

neznamy_uzivatel
Člen | 115
+
0
-

Ahoj,
mám dva problémy s routováním.
Mám presentery Category a Article a chtěl bych, aby:

url home.php?id=123 směrovala na Front:Article:Show s tím id jako pid a
url home.php?name=recepty směrovala na Front:Category:Default (?name=recepty)
a dále aby home.php bez parametrů směrovalo na Front:Homepage:Default

Mám routy:

$router[] = new Route('home.php?id=<pid>', 'Front:Article:Show', Route::SECURED);
$router[] = new Route('home.php?name=<name>', 'Front:Category:Default',  Route::SECURED);
$router[] = new Route('home.php', 'Front:Homepage:Default', Route::SECURED);

Problém je v tom, že ať už použiju jakoukoli variantu – home.php, home.php?id…, home.php?name=… vždy matchne první routa v seznamu a ty parametry to vůbec neřeší… (takže první matchne a druhé dvě mají „may“). Jde to nějak vyřešit?
(Url v těchto tvarech existují ve vyhledávačích a nechci je měnit. )

Pak druhá věc, pro mě taková zajímavost…
obecná routa úplně na konci: (tady jsem ještě neřešil, že index bude na home.php)

$router[] = new Route('<presenter>/<action>[/<id>]', 'Front:Homepage:Default',  Route::SECURED);

A v šabloně:

<a n:href="Homepage:Default">Hlavní stránka</a>

Tady je problém v tom, že v šabloně to vygeneruje odkaz domena.cz/front.homepage/default a ten když se na něj klikne, tak to nette přesměruje na domena.cz/
jak docílit, aby tam nebylo to mezipřesměrování?

Díky :)

neznamy_uzivatel
Člen | 115
+
0
-

Ohledně druhého problému s default a přesměrováním se mi v dalším projektu podařilo odhalit kde má kanec korán:
https://forum.nette.org/…na-jiny-tvar#…