Nette 2.0 sandbox hází 404 na subdoméně
- Paulos
- Člen | 3
Zdravím,
tento problém se tu v minulosti několikrát řešil, ale já jsem stále
nebyl schopen najít funkční řešení, a jednotlivá vlákna už bývají
dávno mrtvá a informace zastaralé, čili to zkusím znovu.
Zjednodušeně: provozuji web na hostingu Wedos, kde Nette normálně funguje,
pokud je umístěno na hlavní doméně; můžu měnit názvy a vše stále
funguje. Jakmile jej ale strčím pod „/subdom/test/“ (subdoména test), tak
místo funkční uvítací stránky sandboxu dostávám Nette-generovanou
404. Čili přesměrování pomocí htaccess funguje správně.
Zkoušená řešení? Podíval jsem se na stav proměnné scriptPath, která skutečně směřovala na /, jenže se mi žádným způsobem nepodařilo Nette přinutit, aby použilo upravenou verzi, ať už to byla natvrdo nastavená adresa v Nette/Html/UrlScript.php – a pokus o nastavení scriptPath v bootstrapu? No, ten vždy skončil s 500 chybou „zamrznutého objektu“, který už nelze změnit.
Zajímavá věc se projevila v momentě, kdy jednou začal Nette zničehonic fungovat i na subdoméně. Bylo to tím, že v kořenové složce domény jsem měl umístěnou stejně pojmenovanou složku „nette“ se stejným obsahem. Po přejmenování na „nette2“ přestala subdoména fungovat, zatímco na hlavní doméně žádný problém nenastal.
Verze Nette: stabilní 2.0; verze PHP: 5.3.8
Děkuji za jakoukoliv pomoc, strávil jsem s tím několik hodin a jsem docela zoufalý.
- Paulos
- Člen | 3
Ha, trochu mi pomohlo vypnutí produkčního modu. Ale jak se to dělá, na
to mi chvíli trvalo přijít. Teď jsem dostal laděnku
s BadRequestException:
Cannot load presenter ‚Nette‘, class ‚NettePresenter‘ was not found
in
‚/data/web/virtuals/17252/virtual/www/subdom/test/nette/sandbox/app/presenters/NettePresenter.php‘.
http://test.3dworms.eu/…xception.htm nebo rovnou http://test.3dworms.eu/…sandbox/www/
Editoval Paulos (4. 2. 2012 8:33)
- Paulos
- Člen | 3
Které cesty konkrétně? Přikládám ještě obsah svého .htaccess na globální úrovni:
# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)
# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: http://kb.wedos.com/r/32/webhosting-htaccess.html
RewriteEngine On
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
#Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^www.3dworms.eu$ [NC]
RewriteRule ^(.*)$ http://3dworms.eu/$1 [R=301,L]
RewriteRule ^$ /index.php?sekce=uvod [L,QSA]
RewriteRule ^([^/]*?).htm$ /index.php?&sekce=$1 [L,QSA]
RewriteRule ^([^/]*?).xhtml$ /index.php?&sekce=$1 [L,QSA]
#Options -Indexes
ErrorDocument 400 /chyby/400.php
ErrorDocument 401 /chyby/401.php
ErrorDocument 403 /chyby/403.php
ErrorDocument 404 /chyby/404.php
ErrorDocument 500 /chyby/500.php
ErrorDocument 502 /chyby/502.php
- Jan Endel
- Člen | 1016
V zásadě v tvém případě existujou dvě možnosti. Nastavit htaccess tak, aby se adresa nette/sandbox/www/ převedla na / nebo upravit routy následujícím způsobem, ovšem tento způsob nedoporučuju páč je fujík, víme?
$router[] = new Route('nette/sandbox/www/index.php', 'Home:default', Route::ONE_WAY);
$router[] = new Route('nette/sandbox/www/<presenter>/<action>[/<id>]', 'Home:default');
- Rellik
- Člen | 104
Tak já v .htaccess v rootu mám pouze toto:
RewriteEngine On
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
což vypadá stejně. V samotné složce s testovacím nette http://nette.rellik.eu nemám .htaccess žádný. Pouze ve složkách app, libs… je jednoduchý .htaccess s obsahem pro zamezení vstoupení do těchto složek
Order Allow,Deny
Deny from all
- Ahorn
- Člen | 5
Ahoj
na začátku měsíce jsem si stáhl Nette Framework 2.0 pro PHP 5.3.
Server mám u Wedosu PHP 5.3.6, nejdřív jsem měl problém s htaccess,
server mi vyhazoval chybu 500.
A pokročil jsem k další chybě error 404 od Nette, když se snažím
spustit sandbox.
Předem Vám děkuji za rady a pomoc
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name=robots content=noindex><meta name=generator content="Nette Framework">
<style>body{color:#333;background:white;width:500px;margin:100px auto}h1{font:bold 47px/1.5 sans-serif;margin:.6em 0}p{font:21px/1.5 Georgia,serif;margin:1.5em 0}small{font-size:70%;color:gray}</style>
<title>Page Not Found</title>
<h1>Page Not Found</h1>
<p>The page you requested could not be found. It is possible that the address is incorrect, or that the page no longer exists. Please use a search engine to find what you are looking for.</p>
<p><small>error 404</small></p>
- Rampus
- Člen | 39
Zkusím se přidat se svým problémem na wedosu.
Mám test projekt (struktura ze sandboxu) v subdomene. takže adresa je test.neco.cz/www
Nete najede, ale špatně matchne routu. Na default by to mělo udělat Front:Homepage:default (na localu funguje) a na wedosu to matchne Www:Front:Homepage:default ⇒ 404Error
Zkoušel jsem laborovat s RewriteBase, ale nepřišel jsem na to. Porádíte?
Dík