Localhost funguje, ale na ostrým serveru mám 404, krom výchozí routy

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

Potřebuju pomoci s routováním na ostrém serveru. Na localhostu všechno funguje, ale jen co jsem to nahrál na server, tak krom výchozí adresy, která je v routě, vidím jen 404. Ale ne tu od Nette. Produkční server běží přes HTTPS.

bootstrap.php

#$application->errorPresenter = 'Error';
$application->catchExceptions = FALSE;

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

$router[] = new NRoute('<presenter>/<action>/<id>/<section>/<sid>', array(
	'presenter' => 'Login',
	'action' => 'default',
	'id' => NULL,
	'section' => NULL,
	'sid' => NULL,
), IRouter::SECURED);

.htaccess

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

	# 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>
Filip Procházka
Moderator | 4668
+
0
-

zkus

$flags = $application->context->httpRequest->isSecured()? IRouter::SECURED : 0;

$router[] = new Route('...', array(
		...
	),  $flags);
_Martin_
Generous Backer | 679
+
0
-

404, která není od Nette? Zavolá webový server index.php (zjisti nějakým echo příkazem)?

voda
Člen | 561
+
0
-

Jestli ti to zobrazuje serverovou 404, tak ti nefunguje mod_rewrite. Zkoušel jsi Requirements checker?

Lawondyss
Člen | 106
+
0
-

_Martin_: nevolá

voda: nezkoušel

Prozatím jsem použil SimpleRouter (díky HosipLan), ale určitě to zkusím rozchodit.

Editoval Lawondyss (7. 6. 2011 21:59)

_Martin_
Generous Backer | 679
+
0
-

Tak to je jasný chybějící mod_rewrite – možné příčiny:

  1. není zapnut v .htaccess souboru
  2. není povoleno načítat .htaccess soubory
  3. mod_rewrite není nahrán do serveru
Vyki
Člen | 388
+
0
-

Když dáš pryč značky <IfModule mod_rewrite.c> a </IfModule mod_rewrite.c> vyhodí to pak chybu 500? Jestli jo není mod_rewrite vůbec na serveru přítomen nebo spuštěn. Jestli zo 500 nevyhodí, je to chyba v konfiguraci mod_rewrite. Třeba u Onebit.cz mod_rewrite funguje až ve chvíli, kdy ho v administraci povolíš, jinak je defaultně vypnutý.

nanuqcz
Člen | 822
+
0
-

Vyki napsal(a):

Když dáš pryč značky <IfModule mod_rewrite.c> a </IfModule mod_rewrite.c> vyhodí to pak chybu 500? Jestli jo není mod_rewrite vůbec na serveru přítomen nebo spuštěn. Jestli zo 500 nevyhodí, je to chyba v konfiguraci mod_rewrite. Třeba u Onebit.cz mod_rewrite funguje až ve chvíli, kdy ho v administraci povolíš, jinak je defaultně vypnutý.

Za předpokladu, že má povolený .htaccess

Filip Procházka
Moderator | 4668
+
0
-

Základní správné nastavení pro virtualhost (předpokládám apache2):

<VirtualHost 127.0.0.1:80>
	ServerName sezeretepes.loc
	ServerAlias www.sezeretepes.loc *.sezeretepes.loc
        ServerAdmin HosipLan@gmail.com

        DocumentRoot /home/hosiplan/develop/projects/sezeretepes.cz

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /home/hosiplan/develop/projects/sezeretepes.cz>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

Ověř si hlavně ty AllowOverride a taky jestli je mod_rewrite načtený.

hosiplan@hosiplan-book:/etc/apache2/mods-enabled$ ls -l |grep rew
lrwxrwxrwx 1 root root 40 2011-02-13 12:13 rewrite.load -> /etc/apache2/mods-available/rewrite.load