cool URl
- chemikus
- Člen | 47
Zdravím, asi si budete myslet, že jsem fakt lama (což nejspíš jsem), ale
opravdu mi furt nejde do hlavy, jak používat to routování. Z dokumentace
jsem si převzal úsek kódu a upravil jsem ho podle mých potřeb. Požadované
URL jsem dosáhl, ale aplikace mi při kliknutí na odkaz hlásí chybu
Error 404 - Objekt nenalezen
. Přikládám ještě kod routeru +
URL, na kterou se dostanu kliknutím na odkaz. Adresářovou strukturu mám
v pořádku a všechny potřebné složky a soubory jsou tam, kde mají být
(aplikace mi předtím fungovala v pořádku, ale po úpravě routeru bohužel
přestala :-( ).
$application = Environment::getApplication();
$router = $application->getRouter();
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
$router[] = new Route('index.php', array(
'presenter' => 'dpp',
'action' => 'default',
), Route::ONE_WAY);
// deklarace obecné dvousměrné routy s cool-url tvarem
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'dpp',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('dpp:default:default');
}
Adresa, na kterou se dostanu kliknutím na odkaz:
http://localhost/deardpp/document_root/dpp/top-comments/
Kompletní chybová hláška, která se mi zobrazí nad výše zmíněnou URL:
Objekt nenalezen!
Požadované URL nebylo na tomto serveru nalezeno. Zdá se, že odkaz na odkazující stránce je chybný nebo zastaralý. Informujte, prosím, autora této stránky o chybě.
Pokud si myslíte, že toto je chyba serveru, kontaktujte, prosím, webmastera.
Error 404
localhost
16.9.2009 19:09:01
Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4
Perl/v5.10.0
Omlouvám se, jestli se to tu už někdy řešilo, ale nenašel jsem příspěvek, který by mi pomohl.
- Ondřej Mirtes
- Člen | 1536
- Název presenteru začíná velkým písmenem, takže musíš mít v app/presenters třídu DppPresenter a v routách ho tak taky pojmenovat:
$router[] = new Route('index.php', array(
'presenter' => 'Dpp',
'action' => 'default',
), Route::ONE_WAY);
// deklarace obecné dvousměrné routy s cool-url tvarem
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Dpp',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('Dpp:'); //tady jsi měl o jedno 'default' víc, navíc tam nemusí být ani to jedno, stačí název presenteru a dvojtečka
}
- Podle všeho se požadavek k Nette vůbec nedostane a jelikož aplikace
pokročilé routy nadefinuje, tak je problém ve tvém .htaccess (ve složce
/deardpp/document_root/
). zkusil bych být tebou následující nastavení:
# configure PHP
php_flag magic_quotes_gpc off
php_flag register_globals off
# mod rewrite
RewriteEngine On
RewriteBase /deardpp/document_root
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(css|js|pdf|ico|gif|jpg|png|rar|zip|tar\.gz)$ index.php [L]
Editoval LastHunter (16. 9. 2009 19:26)