404 pokud běží aplikace v podadresáři
- Martin Mates
- Člen | 179
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
A máš index.php opravdu tam, kam směřuje adresa? Zkontroloval bych adresářovou strukturu.
- Martin Mates
- Člen | 179
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
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
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
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
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
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
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
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.