Nette 2.0 sandbox hází 404 na subdoméně

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

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ý.

Jan Endel
Člen | 1016
+
0
-

Pokud ti to na subdoméně hází problém 404, možná bude problém v routách, zkus jednak někde hodit celou laděnku v HTML potažmo sem hoď své routy.

Paulos
Člen | 3
+
0
-

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)

Rellik
Člen | 104
+
0
-

Já jsem taky na wedosu a taky mám pro nette testovací subdoménu. Nic sem nenastavoval a všechno mi funguje. Měl sem to sice taky ve složce subdom/nette/ ale schválně sem to teď zkoušel přejmenovat a ve funkčnosti není žádný rozdíl. Viděl bych to na chybně nastavené cesty…

Paulos
Člen | 3
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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