Quickstart a neustale 404

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

Dobrý den,
prosím Vás, neustále se peru s quickstartem, přesněji když chci přidat nový úkol do todolistu, tak mi server odpovídá 404.
Rewrite mam na serveru povoleny a mám adresářovou strukturu:

www/
 - todo/
    + app/
    + document_root/
    + libs/
    + tests/
    + readme.txt

Soubot .htacess ve složce document_root/ obsahuje:

# disable directory listing
Options -Indexes

# configure PHP
# <IfModule mod_php5.c>
#    php_flag magic_quotes_gpc off
#    php_flag register_globals off
#    php_flag zend.ze1_compatibility_mode off
# </IfModule>

# mod_rewrite
<IfModule mod_rewrite.c>
	RewriteEngine On
        # RewriteBase /
        RewriteBase /todo/document_root/

	# front controller
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Ale pořád mám 404, můžete mi poradit proč a co s tím?

doomed
Člen | 17
+
0
-

Jen takový tip. Co routy v bootstrapu? Mimochodem, ja mam RewriteBase zakomentovan a vse funguje, videl bych spis problem v bootsrapu.

Mesiah
Člen | 240
+
0
-

Bootstrap jsem upravoval jen minimálně, vlastně jsem jen přidal připojení dibi a routy, které jsou v tom tutorialu (ty, které jsou na stránce „Dokončení základní aplikace“).
Kazdopádně přidávám výpis bootstrap.php

// Step 1: Load Nette Framework
// this allows load Nette Framework classes automatically so that
// you don't have to litter your code with 'require' statements
require LIBS_DIR . '/Nette/loader.php';



// Step 2: Configure environment
// 2a) enable Debug for better exception and error visualisation
Debug::enable();

// 2b) load configuration from config.ini file
Environment::loadConfig();



// Step 3: Configure application
// 3a) get and setup a front controller
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;

dibi::connect(Environment::getConfig('database'));

// Step 4: Setup application router
$router = $application->getRouter();


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

$router[] = new Route('<presenter>/<action>', array(
    'presenter' => 'Todo',
    'action' => 'show',
));

/*
$router[] = new Route('index.php', array(
    'presenter' => 'Todo',
    'action' => 'show', ), Route::ONE_WAY);

$router[] = new Route('<presenter>/<action>/<id>', array(
    'presenter' => 'Todo',
    'action' => 'show',
    'id' => NULL,
));
*/

// Step 5: Run the application!
$application->run();

Napadlo mě, jestli třeba nemůžu mít nějak špatně nastaveny mod_rewrite..?

doomed
Člen | 17
+
0
-

Mesiah napsal(a):

Bootstrap jsem upravoval jen minimálně, vlastně jsem jen přidal připojení dibi a routy, které jsou v tom tutorialu (ty, které jsou na stránce „Dokončení základní aplikace“).
Kazdopádně přidávám výpis bootstrap.php

// Step 1: Load Nette Framework
// this allows load Nette Framework classes automatically so that
// you don't have to litter your code with 'require' statements
require LIBS_DIR . '/Nette/loader.php';



// Step 2: Configure environment
// 2a) enable Debug for better exception and error visualisation
Debug::enable();

// 2b) load configuration from config.ini file
Environment::loadConfig();



// Step 3: Configure application
// 3a) get and setup a front controller
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;

dibi::connect(Environment::getConfig('database'));

// Step 4: Setup application router
$router = $application->getRouter();


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

$router[] = new Route('<presenter>/<action>', array(
    'presenter' => 'Todo',
    'action' => 'show',
));

/*
$router[] = new Route('index.php', array(
    'presenter' => 'Todo',
    'action' => 'show', ), Route::ONE_WAY);

$router[] = new Route('<presenter>/<action>/<id>', array(
    'presenter' => 'Todo',
    'action' => 'show',
    'id' => NULL,
));
*/

// Step 5: Run the application!
$application->run();

Napadlo mě, jestli třeba nemůžu mít nějak špatně nastaveny mod_rewrite..?

V první routě máš s největší pravděpodobností chybu. Máš tam ‚action‘ ⇒ ‚default‘ a mělo by být ‚action‘ ⇒ ‚show‘ pokud jsi postupoval přesně podle quickstartu. View default totiž v TodolistPresenteru není.

doomed
Člen | 17
+
0
-

Jo, teď jsem si všimnul, že tam máš v obou případech ‚presenter‘ ⇒ ‚Todo‘ a má být ‚presenter‘ ⇒ ‚Todolist‘.

Editoval doomed (23. 7. 2010 11:18)

Mesiah
Člen | 240
+
0
-

Bohužel tím to není. Zkusil jsem to změnit a smazat temp, ale pořád 404.
Ani tím Todo a Todolist by to nemělo být, mám presenter TodoPresenter (namísto TodolistPresenter).

Nějaké jiné nápady? :(

BTW: můžu nějak otestovat, zda mi jede rewrite správně?

Editoval Mesiah (23. 7. 2010 13:02)

doomed
Člen | 17
+
0
-

Jednoduchej test přesměrování http://www.jakpsatweb.cz/…rewrite.html

Editoval doomed (23. 7. 2010 13:09)

Mesiah
Člen | 240
+
0
-

hmm, tak nejspíš mám problém s mod_rewrite, nějak mi nefrčí… :(
zkusil jsem do /var/www/ vytvořit soubor pokus.html a také tam přidat .htaccess s obsahem

Redirect /pokus.html http://www.seznam.cz/

ale bohužel, nic se nestalo, žádné přesměrování… takže asi v tomhle je problém, otázka je jak to můžu vyřešit..? :(

buff
Člen | 63
+
0
-

Zkus dát do .htaccess toto:

RewriteEngine On
Redirect /pokus.html http://www.seznam.cz/
doomed
Člen | 17
+
0
-

Nemám moc zkušeností s provozem AMP na Linuxu, takže ti asi neporadím. Zkus sem hodit obsah httpd.conf. Mimochodem, mělo by tám být spíš „pokus\.html“, ne?

Editoval doomed (23. 7. 2010 13:37)

Mesiah
Člen | 240
+
0
-

tak jsem preinstaloval system a zkusil to znovu. aplikace naběhla ok, ale pak přišla 404ka při pokusu vložit nový úkol…
to mě přejeď… :(
jinak httpd.conf je prázdný, takže nemá smysl jej sem postovat, ale třeba Vám něco řekne apache2.conf

Už fakt nevím kde je chyba, že by poradil někdo kdo zkušenější? :)

buff
Člen | 63
+
0
-

A ten rewrite Ti teda teď chodí anebo ne (mohl bys pustit ten jednoduchý test)? Jestli ta aplikace najela, tak asi musí, ne? Pak už asi bude problém jen v routách v bootstrap.php, tipuju.

hippy
Člen | 1
+
0
-

Pokud se Vám stále nepodařilo rozběhat mod_rewrite, zkuste postupovat podle tohoto ;)
http://forum.ubuntu.cz/index.php?…

odin
Člen | 50
+
0
-

Jak uz napsal nekdo nahore, musi to chodit i bez mod_rewrite, takze chyba je nejspis uplne nekde jinde. Preklep v nazvu akce/presenteru/odkazu/ceste? Ta 404 – smeruje to vubec do adresare s Todo aplikaci, smeruje to na spravny server?

Mesiah
Člen | 240
+
0
-

hippy jooo, presne tohle jsem potreboval!!! Myslel jsem si, ze nebude stacit prikaz „sudo a2enmod rewrite“ :) děkuji, už mi to funguje :O :)

warp
Člen | 26
+
0
-

Mám úplně stejný problém až na to, že když jsem ve složce ..\EasyPHP5.2.10\apache\conf\ v souboru httpd.conf přepsal postupně úplně všechny None (u Override) na All a .htacess upravil do podoby jak je v prvním postu v tomto threadu, stále mi po různých kombinacích restartů a mazání tempu vyskakuje 404 a to nejen u přidání nového úkolu, ale u všech aktivit.

//edit: vyřešeno spuštěním easyphp jako správce (win7)

Editoval warp (7. 11. 2010 22:04)