chyba v routovani path/presenter nefunguje; path/index.php/presenter funcguje
- slepic
- Člen | 7
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
zkusil bych odkomentovat a pohrat si s RewriteBase, ja ho mam vzdycky /, ty
tam zkus dat
RewriteBase /sandbox/www/
- slepic
- Člen | 7
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
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
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
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
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
- Majkl578
- Moderator | 1364
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
.