problém na produkčním serveru funguje pouze default stránka

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

Mám ještě jeden problém když jsem nahral aplikaci na net.
Uvodní stránka se zobrazuje správně, ale když chci zobrazit jakoukoliv jinou pomoci odkazu tak to nejde a vypíše se:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@info.cz and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Cím to je? kvůli routám?
Ty mám takto:

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

Nastavoval jsem je nák tak pomoci qs a dokumentace tak nevím jestli třeba tady není chyba

jinak odkaz mám např <a n:href=„Static:onas“>o nás</a>

Editoval Domki (26. 8. 2012 21:16)

castamir
Člen | 629
+
0
-

Zkus v souboru .htaccess v root adresáři zakomentovat/smazat vše krom následujících řádků:

<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteBase /
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
Domki
Člen | 310
+
0
-

No můj soubor co sem tam měl vypadal takto:

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

	# front controller
	RewriteRule ^$ /www/ [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|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>

Když jsem tam vložil přesně to co jsi psal tak mi nešla ani úvodní stránka Tak jsem k tomu tvymu pripsal radek Takto:

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

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
	RewriteRule ^$ /www/ [L]        -- toto je ten přidanej řadek k tomu cos psal ty (bez nej nesla ani uvodni stranka)
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Takto se mi zobrazuje uvodní stranka Homepage, ale kdyz kliknu na odkaz na jinou stranku tak se nyní zobrazí Chyba / Error 404
Objekt nenalezen! / Object not found! generovaná Webhostingem

Jinak ještě nevím jestli to nemůže být strukturou mam na webhostinu zalozenou subdomenu
a v ní slozky app,libs, log, temp, www a soubor .htaccess
ve slozce www sobor index.php
ve slozce app soubor bootstrap.php

Editoval Domki (27. 8. 2012 8:42)

Domki
Člen | 310
+
0
-

Co nevíte co s tím?

A na localhostu to šlo normálně přejít přes odkaz na jinou stranku.
Akorat na localhostu přes xampp sem mel url vcetne www, ale o to by se tady mel starat asi ten řádek v htaccess?

22
Člen | 1478
+
0
-

a co requirment checker? Vyzkoušel jsi vše, co je tu ohledně toho, napsáno na fóru? Na 98% to určitě není problém Nette.

Domki
Člen | 310
+
0
-

Aha
Toto by mohla být příčina?
.htaccess mod_rewrite Disabled
Mod_rewrite is probably not present. You will not be able to use Cool URL.

Kde to na serveru povolím,
Myslím ze na localhostu sem neco upravoval v xampp/php/.....

Kde to změním na webhostingu?

Edit: ted sem nasel na webhostingu ve FAQ:

8) Podporujete mod_rewrite a je možné si jej případně nastavit přímo přes .htaccess?

Ano mod_rewrite podporujeme a je možné si toto nastavovat v souboru .htaccess.
RewriteEngine On

A na ulozisti mám soubor htaccess :

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

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
	RewriteRule ^$ /www/ [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Kde toto RewriteEngine On je povolený, nebo v čem mám chybu?

Editoval Domki (27. 8. 2012 16:35)

22
Člen | 1478
+
0
-

oddelej ten <IfModule mod_rewrite.c>, melo by do vyhodit Apache petistovku a bude se vedet, jestli ti jede nebo ne..

22
Člen | 1478
+
0
-

nevim, dochazi mi fantazie, co je to za hosting a jede tim tam sandbox?

Domki
Člen | 310
+
0
-

web4ce

sandbox ten du zkusit

22
Člen | 1478
+
0
-

no, nejede ti mod_rewrite, to je asi celé.. takže napřed si oveř, jestli se ti .htacces vůbec načítá a pak si zprovozni mod_rewrite ve spolupr8ci s podporou hostingu.

Domki
Člen | 310
+
0
-

jn tak to už ukazoval ten checker?
Jak si ověřím jestli .htacces vůbec načítá?

Jo tak tam mi napsali že je zapnutý, hold tam dyzkat ještě jednou napíšu, jinak nette všeobeně běží na všech hostincích ne?

Domki
Člen | 310
+
0
-

Ještě mě napadlo nemůže to být tím že to mám na subdoméně?
Ale ten checker to hlasil i normalne

22
Člen | 1478
+
0
-

Já ten hosting neznám, zjisti si, jak má vypdat .htaccess pro přesměrování na subdoménu u nich, je to tady na foru řešené pro wedos, tak třeba ti to bude fungovat, jinak musíš s podporou nebo se naučit dělat s .htaccess

Domki
Člen | 310
+
0
-

Ok Díky.
A jak že zjistím jestli .htacces se vůbec načítá? jak jsi psal?

A víte takhle odkaz o tom wedosu?

Jo na tom .htaccess taky něco bude :-) časem

22
Člen | 1478
+
0
-

Existuje Google a rozšířené vyhledavaní tady na foru, tak hledej..

Domki
Člen | 310
+
0
-

Ok, i tak moc díky

Domki
Člen | 310
+
0
-

Jo tak soubor .htaccess se načítá

Jinak tento soubor má byt v rootu?

Co te soubor.htaccess v app?

Editoval Domki (27. 8. 2012 19:06)

David Matějka
Moderator | 6445
+
0
-

ten .htaccess s konfiguraci rewrite modu ma byt ve www.
dalsi soubory .htaccess v app, temp atd. zabranuji pristupu pres web k souborum, ke kterym by se nikdo z venku dostat nemel :)

Editoval matej21 (27. 8. 2012 20:15)

Domki
Člen | 310
+
0
-

aha takze

RewriteEngine On
       RewriteBase /
       RewriteRule ^$ /www/ [L]
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule !\.(pdf|js|ico|gif|png|css|rar|zip|tar\.gz)$ index.php [L]

Toto by melo být v kazdy z tech slozek?

David Matějka
Moderator | 6445
+
0
-

ne, spatne jsem to zformuloval. mela tam byt spis tecka nez carka :)

v app, temp atd. ma byt .htaccess s

Order Allow,Deny
Deny from all

ve www .htaccess asi takovej:

	RewriteEngine On
	RewriteBase /
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|css|rar|zip|tar\.gz)$ index.php [L]
Domki
Člen | 310
+
0
-

a www znamena co?

protoze ja ted ten htaccess mam v rootu

jakoze

public_html
	sandbox
		app
		:
		www
		.htaccess

Takhle a nebo tady ne a az (jen) v tom www?

Editoval Domki (27. 8. 2012 20:31)

castamir
Člen | 629
+
0
-

Pokud nepoužíváš moduly a chceš stránky otestovat i bez cool url, tak obal routy v bootstrap.php do následující podmínky:

// Setup router
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
    $container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
    $container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
} else {
    $container->router = new SimpleRouter('Homepage:default');
}

Zakomentuj si ale mod-rewrite v htaccess, abys měl jistotu, že ho nepoužíváš.

castamir
Člen | 629
+
0
-

index.php musí být ve stejné složce jako ten .htaccess s mod_rewrite. V ostatních složkách (app, temp, log, libs, …) dej .htaccess pro zamezení přístupu.

Domki
Člen | 310
+
0
-

No dobudoucna bych ale stejně chtěl mít cool url takže to by bylo jen dočasny řešení no

David Matějka
Moderator | 6445
+
0
-

a kde je root pro domenu? kdyz zadas www.domena.tld, tak je root v rootu aplikace, nebo v te slozce www? (snad jsem to napsal srozumitelne) :)

David Matějka
Moderator | 6445
+
0
-

root domeny (zakladni slozka pro www.domena.tld) by mel byt nejlepe na slozku www, v rootu aplikace by nemel byt zadny .htaccess a ve slozce www ten uvedeny vyse.

pokud vsak neni jiny reseni, nez mit root domeny v rootu aplikace, tak je nejjednodussi asi proste nakopirovat i index.php a celej obsah www (css, obrazky..) do rootu aplikace

Domki
Člen | 310
+
0
-

Aha to sem nevěděl
Takže v rootu
by mel byt .htaccess
jen s řádkem:
RewriteRule ^$ /www/ [L]
A ve www
pak s obsahem:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|png|css|rar|zip|tar\.gz)$ index.php [L]

to mi ale vypisuje chybu 403

David Matějka
Moderator | 6445
+
0
-

v rootu by nemel byt zadny .htaccess a zakladni adresar domeny (verejne pristupny pres www.domena.tld) by mel byt na tu slozku www

pokud to ale nejde, tak do rootu aplikace (tj na uroven slozek app, temp..) presunout obsah slozky www (index.php, .htaccess, css, js…)

takze se nejdriv ujisti, kde je ta verejna slozka pro domenu, zkus tam nahrat jen nejaky index.html

Editoval matej21 (27. 8. 2012 20:46)

22
Člen | 1478
+
0
-

@matej: to teda není správné řešení, správné řešení je dat do rootu .htaccess, který přesměruje na subdomain/www/index.php

Domki
Člen | 310
+
0
-

NO ted JSEM zkusil jak jsi psal vse z www dat do rootu a sandbox mi uz funguje

22: takze v rootu
tento radek:
RewriteRule ^$ /www/ [L]
a ve www zbytek toho .htacces?

22
Člen | 1478
+
0
-

jo, tak by to melo byt, v rootu te subdomeny presmerovani na slozku www a tam uz mas klasicky default nette .htaccess

22
Člen | 1478
+
0
-
Options -Indexes

RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub.domain.cz$
RewriteCond %{REQUEST_URI} !^/path_to_app/www/
RewriteRule (.*) /www/$1 [L]

asi nějak takto…

Domki
Člen | 310
+
0
-

22: To už je v ty slozce www? ten text co jste psal?

22
Člen | 1478
+
0
-

RewriteBase /www ?

jakej text?? musíš zjistit, kam je nasměrovaný na serveru root té subdomeny, tam totiž očekává index.php, ale tyho máš až ve složce www, tedy musíš mu jaksi sdělit, že musí jít do složky www, když chce index.php

Editoval 22 (27. 8. 2012 21:08)

Domki
Člen | 310
+
0
-

?
Já .htaccess psat opravdu neumím nešlo by to prosím nak jasněji jaký řadky do kterýho .htaccess?

22
Člen | 1478
+
0
-

už nevím, jak ti to vysvětlit, máš to popsane v předchozím příspěvku, strkat kvůli tomu index někam mimo www adresář je špatně

Domki
Člen | 310
+
0
-

Index mam ve složce www
No vzhledem k tomu že co se tyce .htaccess vubec nevím co v tom znamena, tak bych to potřeboval napsat aby to jelo, (jo asi by bylo lepší se to naučit, ale ted bych rád rozchodil ten web)
Když mám strukturu:

-public_html
	-sandbox
		-app
		-libs
		-log
		-temp
		-tests
		-www
			-adminer
				----
			-css
				----
			-images
				----
			-js
				----
			-.htaccess
			-index.php
			-robots.txt
			-web.config
		-.htaccess

Tak co mám vložit do toho prvního a druhýho souboru .htaccess?

22
Člen | 1478
+
0
-

máš to napsané tady, cesty si tam musíš napsat svoje, je to na 30 min základy .htaccess, takže nechapu, proč se na ně nepodíváš, já ti to tu vysvětlovat nebudu a netýká se to ani Nette…

Edit: Do toho public_html musíš dát něco podobného, jako je uvedeno zde

tedy serveru sdělit, že se má přesunout do sandbox/www

Editoval 22 (27. 8. 2012 21:37)

Domki
Člen | 310
+
0
-

22 napsal(a):

Options -Indexes

RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub.domain.cz$
RewriteCond %{REQUEST_URI} !^/path_to_app/www/
RewriteRule (.*) /www/$1 [L]

asi nějak takto…

A toto by teda bylo do toho .htacces v rootu subdomeny?

22
Člen | 1478
+
0
-

asi tak, musíš si to upravit na tvoje podmínky

Domki
Člen | 310
+
0
-

Ok díky, tak to du zkusit.
Jo s Nette už tohle nemá nic společnýho, ale bez toho mi „nette nepude“

22
Člen | 1478
+
0
-

Půjde, když použiješ Simple Router, než se naučíš s .htaccess

Domki
Člen | 310
+
0
-

No to by možná taky ted slo
a to ten .htaccess v rootu subdomeny
musím nechat toto:
RewriteRule ^$ /www/ [L]

A pak jen upravím routy dle tohoto:
https://doc.nette.org/…tion/routing#…
?
Nebo pak musim predelavat i vsechny odkazy?

Editoval Domki (27. 8. 2012 21:57)

22
Člen | 1478
+
0
-

no jak jinak se dostaneš server do té složky www? Takže to tam musí být.. a pak ti bude fungovat web normálně a neptřebuješ ani SimpleRouter…

Domki
Člen | 310
+
0
-

Tak jsem se dopoledne koukal na .htacces
Ten sandbox už sem rozběhal i odkaz na adminer
to samí se mi podařilo potom i u tý mý aplikace
Nic méne zatím mam jen .htaccess v rootu subdomeny, na ty mi aplikaci mi funguje uvodni stranka, nebo kdyz zadam do url adminer, tak i adminer na mysql
Ale ten adminer je ve slozce www.
Ale jiny odkazy mi porad jeste nefungujou.
Co stím? musím udělat ještě jeden .htaccess který dam do složky www kde je i index?
A co má obsahovat? Tam musím tak odkázat na slozku app kde jsou presentery a sablony?

Editoval Domki (28. 8. 2012 13:26)

22
Člen | 1478
+
0
-

ve složce www má pak být standardní nette .htaccess, už to tu píšu asi po páte…

Domki
Člen | 310
+
0
-

No to pěkný, ale ten tam mám a u ostatních odkazu to hazí chybu 500 Internal server error

castamir
Člen | 629
+
0
-

Error 500 webhostingu nebo od Nette? Zkus zkontrolovat obsah složky /log

Domki
Člen | 310
+
0
-

Co je to blbost premistit to primo do
slozky newtest a ne jeste do www? jak mi psali?

TheNEoo
Člen | 75
+
0
-

Domki napsal(a):

Co je to blbost premistit to primo do
slozky newtest a ne jeste do www? jak mi psali?

www slozku si prehraj do rootu, aby ti vzniklo toto:

root(hostingu)
–app
–css
–images
–js
–libs
–log
–temp
–index.php
–web.config
–.htaccess
–a dalsi

v index.php
<?php

// absolute filesystem path to this web root
define('WWW_DIR', __DIR__);

// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/app');

// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/libs');

// uncomment this line if you must temporarily take down your site for maintenance
// require APP_DIR . '/templates/maintenance.phtml';

// load bootstrap file
require APP_DIR . '/bootstrap.php';

.htaccess v rootu

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

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

pokavad v dalsich adresarich treba app nemas .htaccess tak ho tam nahraj s timto. Zamezi pristupu do adresare

Order Allow,Deny
Deny from all

melo by ti to jet s puvodni tvoji aplikaci, ja to takto pouzivam bez problemu. Mod rewrite maj povolenej vsude, mas jen nekde botu v nastaveni.

Editoval TheNEoo (28. 8. 2012 23:24)