chyba v routovani path/presenter nefunguje; path/index.php/presenter funcguje

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

Ahoj,
s nette zrovna začínám a objevila se mi tu zvláštní chyba a nevím co s tím.

stáhnul jsem si nette a zkopiroval jsem si adresář sandbox abych z něj mohl vyvynou vlastní aplikaci.

kopii sandboxu jsem umístil do /var/www/sandbox

Upravil jsem stránku Homepage presenteru, při přístupu na localhost/sandbox/www se zobrazí co má – tedy default template homepage presenteru.

Přidal jsem nový presenter LoginPresenter.php ale jeho URL nefunguje. Na homepage template jsem si přidal link na ten login {link Login:} – při zobrazení stránky z toho vznikne link localhost/sandbox/www/login ale při pokusu o přístup hlásí 404.
Zvláštní je že když se pokusím přistoupit na podobnout url – localhost/sandbox/www/index.php/login tak se zobrazí přesně to co bych očekával.

Obsah sandbox/www/.htaccess ani sandbox/www/bootstrap.php jsem nijak nemenil

.htacces:

# Apache configuration file (see httpd.apache.org/docs/2.2/mod/quickreference.html)

# disable directory listing
Options -Indexes

# enable cool URL
<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteBase /

	# prevents files starting with dot to be viewed by browser
	RewriteRule /\.|^\. - [F]

	# 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>

# enable gzip compression
<IfModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
</IfModule>

# allow combined JavaScript & CSS. Inside of script.combined.js you could use <!--#include file="script.js" -->
<IfModule mod_include.c>
	<FilesMatch "\.combined\.(js|css)$">
		Options +Includes
		SetOutputFilter INCLUDES
	</FilesMatch>
</IfModule>

bootstrap.php:

<?php

/**
 * My Application bootstrap file.
 */
use Nette\Application\Routers\Route;


// Load Nette Framework or autoloader generated by Composer
require LIBS_DIR . '/autoload.php';


// Configure application
$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');

// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
	->addDirectory(APP_DIR)
	->addDirectory(LIBS_DIR)
	->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();

// Setup router
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');




// Configure and run the application!
$container->application->run();

Nějaké nápady kde je chyba? Jsem už úplně bezradnej z toho :-/

David Matějka
Moderator | 6445
+
0
-

zkusil bych odkomentovat a pohrat si s RewriteBase, ja ho mam vzdycky /, ty tam zkus dat
RewriteBase /sandbox/www/

slepic
Člen | 7
+
0
-

To už jsem zkoušel a nepomohlo.

spíš si myslím že to bude souviset s tímto:

output z checker.php:

.htaccess file protection Disabled
File protection by .htaccess is not present. You must be careful to put files into document_root folder.

taky když v tom .htaccess napisu uplnou blbost tak to apachi nevadi, co si myslim ze by melo, takze jde asi o to ze apache vubec nečte ty htaccessy. Jenom pořád nemůžu přijít na to jak to povolit :-/

David Matějka
Moderator | 6445
+
0
-

do nastaveni apache (nekde tam bude asi nakonfiguravanej virtualhost a v nem <directory>, tak do toho) AllowOverride All

viz.
http://httpd.apache.org/…od/core.html#…

Editoval matej21 (4. 11. 2012 15:14)

jiri.pudil
Nette Blogger | 1032
+
0
-

Zkontroluj direktivu AllowOverride pro příslušnou složku (v definici VirtualHostu – obvykle v /etc/apache2/sites-available/default). Mělo by tam být All (případně vypsané konkrétní skupiny, pokud chceš být specifičtější; viz dokumentace)

slepic
Člen | 7
+
0
-

Jaj, ja se to snažil přidat do apache2.conf a httpd.conf ale tam to nějak nezabiralo, nakonec jsem to nasel v sites-enabled. Bylo tam None a změnil jsem to na All, nicmeně teď to hlasi:

.htaccess mod_rewrite Disabled
Mod_rewrite is probably not present. You will not be able to use Cool URL.

Grr :-(

David Matějka
Moderator | 6445
+
0
-

musis nainstalovat mod_rewrite.. obyvkle tak, ze do /etc/apache2/mods-enabled das symlink na /etc/apache2/mods-available/rewrite.load
takze
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

slepic
Člen | 7
+
0
-

OMG IT WORKS !!!! I LOVE YOU !!!

Majkl578
Moderator | 1364
+
0
-

matej21 napsal(a):

musis nainstalovat mod_rewrite.. obyvkle tak, ze do /etc/apache2/mods-enabled das symlink na /etc/apache2/mods-available/rewrite.load
takze
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

K tomu se používá a2enmod rewrite.