not found – 404 u odkazů na presentery

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

Zdravím,
zkouším si statický web v nette a při odkazech v menu mi to vždy vyhodí 404 file not found.

mod_rewrite mi běží. Jsem na localhostu – apache2 v ubuntu.

htaccess vypadá takhle

Je chyba někde v nastavení mod_rewrite? Popř. co bych měla udělat pro to, abych zjistila kde je chyba?

Díky za odpovědi!

Majkl578
Moderator | 1364
+
0
-

Není náhodou URL http://localhost/nette/www/, nebo používáš oproti sandboxu upravenou verzi adresářové struktury?

RewriteBase by mělo vést do rootu webu, tzn. RewriteBase /nette/ (popř. RewriteBase /nette/www/), případně by mohlo stačit zakomentovat/neuvádět.

trisha
Člen | 20
+
0
-

Majkl578 napsal(a):

Není náhodou URL http://localhost/nette/www/, nebo používáš oproti sandboxu upravenou verzi adresářové struktury?

RewriteBase by mělo vést do rootu webu, tzn. RewriteBase /nette/ (popř. RewriteBase /nette/www/), případně by mohlo stačit zakomentovat/neuvádět.

No zkusila jsem věci z www dát do rootu, abych tam neměla to www/ ale jen localhost/ je to špatně? Nebo jak to vyřešit jinak? Nikde jsem nenašla nějaký způsob. Přece když mám web, tak chci mít web.cz a ne web.cz/www/.

Majkl578
Moderator | 1364
+
0
-

No, to asi záleží na hostingu, ty mizerné ti takovou strukturu nedovolí. Pak jsou dvě cesty.
Jedna je ta tvoje, přesunout obsah www o úroveň výš a upravit cesty v index.php (a dát si dvojitý pozor na oprávnění k přístupu do složek app, libs a zejména temp a log).
Druhá je zachování výchozí struktury a směrovat všechny požadavky do www/. Kdysi jsem to na jednom webu také řešil, protože běžel někde na mizerném sdíleném hostingu. Měl jsem tedy 2 htaccessy, jeden v rootu projektu a druhý ve www/. Ten v rootu vypadal takto:

Options -Indexes +FollowSymLinks

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^$ www/ [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) www/$1 [L]

(Možná ta pravidla lze sloučit, už si nepamatuji, proč jsou takto oddělena.)

Druhý, ve www/, byl pak už standardní:

Options -Indexes

<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteBase / - neodkomentovávat!

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

V Nette/bootstrapu nebyly žádné dodatečné změny potřeba (alespoň si na nic nevzpomínám), web na této konfiguraci funguje doposud. :)

Draffix
Člen | 146
+
0
-

Přesně jak psal Majkl578, buď hodit vše o úroveň výše nebo dodat .htaccess s přesměrováním. Já osobně mám tohle:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ /www/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/www/
    RewriteRule ^(.*)$ /www/$1
</IfModule>

Nicméně pokud vím, tak úplně stejně funguje i přesměrování co uvedl Majkl.

trisha
Člen | 20
+
0
-

No ale nic z toho pořád neřeší můj problém.

přikládám odkaz na rar

Nebo nemůžete mi sem někdo hodit nějaký funkční příklad toho odkazu?

Editoval trisha (24. 4. 2013 12:57)

Jan Endel
Člen | 1016
+
0
-

Jak radil už Majkl578 nade mnou, editovat .htaccess:

	RewriteBase / -> RewriteBase /nette/
trisha
Člen | 20
+
0
-

Jan Endel napsal(a):

Jak radil už Majkl578 nade mnou, editovat .htaccess:

	RewriteBase / -> RewriteBase /nette/

to mám, mám to ještě ve složce neaktualni, takže RewriteBase /neaktualni/nette/, ale pořád nic. Ten .htaccess by měl být uplně v rootu v localhostu, nebo v nette/?

Jan Endel
Člen | 1016
+
0
-

pokud je to ještě v podsložce neaktuální tak v umístění /neakutalni/nette/.htaccess editovat do tvaru:

RewriteBase /neaktualni/nette/.htaccess

Kdyžtak je tady moc pěkné popovídání

trisha
Člen | 20
+
+1
-

ufff, nefungoval vůbec žádnej htaccess nikde :)

Tak pro ty co používaji ubuntu + apache2

sudo gedit /etc/apache2/sites-available/default

a změňte si AllowOverride None na AllowOverride All

povolit mod_rewrite

sudo a2enmod rewrite

restart… ať taky nestrávíte celej den studováním htaccessu a mod_rewrite, když vám žádnej htaccess nejede. Ale tak alespoň to už umim :D

Editoval trisha (25. 4. 2013 2:07)

Majkl578
Moderator | 1364
+
0
-

Tak to se pak těžko opravuje, něco, co vůbec fungovat nemůže. :) A jaké řešení nakonec funguje resp. jaké jsi použila?

EDIT: Ha, 1000. příspěvek!

trisha
Člen | 20
+
0
-

Majkl578 napsal(a):

Tak to se pak těžko opravuje, něco, co vůbec fungovat nemůže. :) A jaké řešení nakonec funguje resp. jaké jsi použila?

Všechno ze složky www jsem si dala o adresář výše ;) Takhle se mi to líbí víc. Ono to fungovalo i před tím, jen prostě nešel ten htaccess a mod_rewrite. Na wedosu mi to šlo od začátku, ale na tom localu právě ne. Moc děkuju za rady! Konečně můžu postopit k dalšímu zkoumání nette. :)

EDIT: gratuluju!

Editoval trisha (25. 4. 2013 3:14)