Beginner: Problém s routováním, 404

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

Zdravím,

začínám s Nette a dostal jsem se do problému, který i přestože jsem prolezl snad všechy příspěvky tady, tak jsem nevyřešil, proto se bohužel musím zeptat.

Zkousil jsem si nastavit jednoduchou routu:

$router = $application->getRouter();
$router[] = new Route('/uvod/<id>', array(
    'presenter' => 'Uvod',
    'view' => 'default'));

Jakmile jsem toto udělal, tak všechny stránky chyba 404 (jinak doposud funkční vše). Dobře asi chyba v .htaccess, ten jsem zkusil změnit snad všemi způsoby (vím, že na serveru je povolený), aktuálně tedy ho mám:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

(tento .htaccess používám na jiné subdoméně tohoto hostingu u Zendu a tam mi pracuje správně,
jinak složku mám pojmenovanou „public“ místo defaultního „document_root“)

Zajímavé, ale je, že když zkusím RoutingDebugger, tak v něm se hlásí vše korektně a to i cesta ona cesta: nette.example.cz/uvod/1
Čili z toho vyplývá, že chyba v .htaccessu není.

nAS
Člen | 277
+
0
-

Já bych zkusil vyhodit to úvodní lomítko:

$router = $application->getRouter();
$router[] = new Route('uvod/<id>', array(
    'presenter' => 'Uvod',
    'view' => 'default'));
frosty22
Člen | 373
+
0
-

nAS napsal(a):

Já bych zkusil vyhodit to úvodní lomítko:

$router = $application->getRouter();
$router[] = new Route('uvod/<id>', array(
    'presenter' => 'Uvod',
    'view' => 'default'));

Děkuji však ee, tudy cesta nevede ;| nepomohlo.

Ola
Člen | 385
+
0
-

EDIT: chyba, volitelný parametr by nepomohl v jiných stránkách.

Editoval Ola (2. 4. 2009 16:14)

David Grudl
Nette Core | 8228
+
0
-

Máš tam i nějaké další routy?

frosty22
Člen | 373
+
0
-

David Grudl napsal(a):

Máš tam i nějaké další routy?

nemám, pouze tato.

btw: když tě tady vidím, tak se podívej do obecné diskuze na poslední téma ode mě, případně abys to mohl stáhnout, jestliže to nechceš takto zveřejnit. Díky

Editoval frosty22 (2. 4. 2009 18:03)

David Grudl
Nette Core | 8228
+
0
-

Pokud tam je jen tato jedna routa, tak bude fungovat pouze Presenter Uvod s akcí/view default.

Pokud ti to hází chybu 404, je dobré se podívat do error logu. Především však, neladil bych aplikaci na ostrém serveru, ale na lokále.

frosty22
Člen | 373
+
0
-

David Grudl napsal(a):

Pokud tam je jen tato jedna routa, tak bude fungovat pouze Presenter Uvod s akcí/view default.

Pokud ti to hází chybu 404, je dobré se podívat do error logu. Především však, neladil bych aplikaci na ostrém serveru, ale na lokále.

Zkouším teď jiné cesty a ty mi pracují dle manuálu..

$router[] = new Route('index.php', array(
    'presenter' => 'Article',
    'view' => 'show',
), Route::ONE_WAY);

$router[] = new Route('<presenter>/<view>/<id [0-9]+>', array(
    'presenter' => 'Article',
    'view' => 'show',
    'id' => NULL,
));

akorát mi nefungujou defaultní hodnoty, když bych chtěl defaultní presenter a view..

$router[] = new Route('index.php', array(
    'presenter' => 'default',
    'view' => 'default',
), Route::ONE_WAY);

$router[] = new Route('<presenter>/<view>/<id [0-9]+>', array(
    'presenter' => 'default',
    'view' => 'default',
    'id' => NULL,
));\--

Editoval frosty22 (2. 4. 2009 19:24)

frosty22
Člen | 373
+
0
-

Vyřešeno i toto. Problém je, jak jste si asi všichni všimli, ve velikosti písmena „D“ u defaulního prezentera v cestě.