404 pokud běží aplikace v podadresáři

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

Zdarvím. Měl jsem podobný problém už nedávno. Nakonec jsem to vyřešil tak, že jsem vypnul routování úplně. To teď ale nechci. Problém:

Představte si skeleton z distribuce Nette a přidejte do HomepagePresenter funkci actionNeco(). Na localhostu pohodička /homepage/neco/ mě hodí na tu action, všichni jsou šťastní. Na serveru nahraju celou aplikaci do podsložky. Link na www.domena.cz/podslozka/homepage/neco/ mi hodi 404.

Co jsem tak pochopil, tak by nemělo záležet na tom, jestli je to v podsložce nebo ne. Na localhostu taky ladím 127.0.0.1/podslozka/ a funguje to.

Zkoušel jsem v .htaccess změnit RewriteBase na /podslozka/, podslozka/, /podslozka a žádná změna. Co dělám špatně? Nebo spíš, co bych měl udělat, aby to fungovalo?

Ještě dodám, že v logu nic není. Tu 404 dostanu od serveru a ne od ErrorPresenteru. (The requested URL /var/www/imao/domena.cz/home/www/podslozka/index.php was not found on this server.)

Díky

Editoval Martin Mates (7. 9. 2009 11:33)

Ondřej Brejla
Člen | 746
+
0
-

A máš index.php opravdu tam, kam směřuje adresa? Zkontroloval bych adresářovou strukturu.

Martin Mates
Člen | 179
+
0
-

Warden napsal(a):

A máš index.php opravdu tam, kam směřuje adresa? Zkontroloval bych adresářovou strukturu.

To jsem samozřejmě zkontroloval. Ta cesta, kterou to píše u té 404ky normálně existuje, když ji zadám tak se dostanu normálně na Homepage:default. Jakmile to ale vede na Homepage:neco (čili /homepage/neco/) dostanu tuhle 404ku.

Ondřej Brejla
Člen | 746
+
0
-

A kde máš umístěný .htaccess? RewriteBase se vztahuje k umístění .htaccess. Zkusil bych ho trošku poposouvat, případně přenastavit rewrite base.

Editoval Warden (7. 9. 2009 11:59)

Martin Mates
Člen | 179
+
0
-

Warden napsal(a):

A kde máš umístěný .htaccess? RewriteBase se vztahuje k umístění .htaccess. Zkusil bych ho trošku poposouvat, případně přenastavit rewrite base.

.htaccess je v té podsložce, tam kde je index.php (www.domena.cz/podslozka/.htaccess). Kam bys to poposouval?

Editoval Martin Mates (7. 9. 2009 12:25)

Ondřej Brejla
Člen | 746
+
0
-

Pokud je na úrovni index.php, který už je v /podlsozce/, tak nikam. Ale pokud v té podsložce je, tak by už RewriteBase neměl být typu /podslozka/ ne? Pokud se bere k aktuálnímu umístění .htaccess. Zkusil bych asi ještě nastavení na /, případně ji zrušit uplně. Ale jsou to všechno jen nápady, co bych asi tak dělal…nikdy jsem tuhle šílenost řešit nemusel…

Martin Mates
Člen | 179
+
0
-

Ten RewriteBase vypnutý byl. Nešlo to, tak jsem zkoušel tohle. Bohužel nic. Myslím, že když zkusíš vzít skeleton a udělat s ním přesně to, co jsem říkal, tak ti to taky nepůjde. Jsou v tom nějaký čáry :-)

Matúš Matula
Člen | 257
+
0
-

Skusil by som z nadradenych adresarov pokusne odstranit .htaccess a v danom podadresari dat napevno cestu k index.php z rootu.
Nejako takto:

# front controller

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule !\.(pdf|ico|gif|jpg|png|rar|zip|tar\.gz)$ /root/zlozka/podzlozka/index.php [L]

Tiez som toto kedysi riesil, len si uz presne nepamatam ako som to urobil.. Pokus-omyl :-)

Editoval Matúš Matula (7. 9. 2009 15:32)

nesro
Člen | 3
+
0
-

mám stejný problém. Pokud zadám cestu do index.php (ať už v http://localhost/ nebo v http://localhost/neco/) zobrazí se mi Homepage:default (mám tam překopírovaný Skeleton). Když ale udělám v HomepagePresenteru renderNeco, vytvořím i neco.phtml a zavolám http://localhost/homepage/neco/ tak od serveru dostanu 404ku. Dostanu jí i při zavolání http://localhost/…page/default. Přitom mod_rewrite tu mám. A Requirements-Checker mi říká: „Your server configuration satisfies minimum requirements of Nette Framework. Please see the warnings listed below.“ mám warning u „.htaccess file protection – File protection by .htaccess is optional. If it is absent, you must be careful to put files into document_root folder.“ ale to nevím, jaký to na to má vliv.

díky

ještě doplním, že dřív mi nette fungovalo nomálně a že stejný problém mám na localhostu i na hostingu

Editoval nesro (26. 9. 2009 10:37)

_Martin_
Generous Backer | 679
+
0
-

nesro napsal(a):

mám stejný problém. Pokud zadám cestu do index.php (ať už v http://localhost/ nebo v http://localhost/neco/) zobrazí se mi Homepage:default (mám tam překopírovaný Skeleton). Když ale udělám v HomepagePresenteru renderNeco, vytvořím i neco.phtml a zavolám http://localhost/homepage/neco/ tak od serveru dostanu 404ku. Dostanu jí i při zavolání http://localhost/…page/default. Přitom mod_rewrite tu mám. A Requirements-Checker mi říká: „Your server configuration satisfies minimum requirements of Nette Framework. Please see the warnings listed below.“ mám warning u „.htaccess file protection – File protection by .htaccess is optional. If it is absent, you must be careful to put files into document_root folder.“ ale to nevím, jaký to na to má vliv.

díky

ještě doplním, že dřív mi nette fungovalo nomálně a že stejný problém mám na localhostu i na hostingu

Jestli se nemýlím, tak to bude způsobeno právě oním „.htaccess file protection“, které říká, že nemáš povoleno měnit konfiguraci souborem .htaccess. Což je docela problém, protože nastavení mod_rewritu se dělá právě v tomto souboru – tudíš (pokud sis mod_rewrite nenastavil přímo v httpd.conf) pro složky Skeletonu nemá vůbec nastaven žádná pravidla.