Všechny odkazy vedou na „#“
- Bernard Williams
- Člen | 207
Nazdárek,
nedaří se mi rozchodit web na ostrém serveru. Na localhostu mi vše šlape jak má, ale když aplikaci překopíruji na ostrý server, tak to nejde. Konkrétně se mi na ostrém serveru volá hned Error presenter a všechny odkazy mi vedou na „#“ a to jak absolutní {plink //action}, tak i relativní {plink action}. Vše ostatní funguje – @layout.phtml, CSS, atd. Aplikace mi teď běží na doméně II. řádu, ale zkoušel jsem to i na I. řádu a i v podadresáři, ale vše se stejným výsledkem. Log je prázdný. Používám Nette 0.9.2.
Bootstrap:
require LIBS_DIR . '/Nette/loader.php';
Debug::enable();
Environment::loadConfig();
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;
$router = $application->getRouter();
Route::addStyle('lang', NULL);
Route::setStyleProperty('lang', Route::PATTERN, '[a-z0-9]{1,3}');
$router[] = new Route('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
'lang' => 'cs',
), Route::ONE_WAY);
$router[] = new Route('<lang>/<action>/<id>', array(
'presenter' => 'Homepage',
'action' => 'default',
'lang' => 'cs',
'id' => NULL,
));
$application->run();
BasePresenter:
abstract class BasePresenter extends Presenter
{
public static function getPersistentParams() {
return array('lang');
}
public $lang;
public $oldLayoutMode = FALSE;
private $db;
public function startup() {
parent::startup();
dibi::connect(Environment::getConfig('database'));
dibi::query('SET NAMES UTF8');
if (!isset($this->lang)) {
$this->lang = $this->getHttpRequest()->detectLanguage(array('en','cs'));
$this->canonicalize();
}
$this->template->lang = $this->lang;
$user = new User;
if ($user->isAuthenticated())
$this->template->user = $user->getIdentity();
}
}
Btw. na co slouží canonicalize()? Nikde jsem to nenašel.
Děkuji
Bernard
- Bernard Williams
- Člen | 207
Používám starou adresářovou strukturu:
app
\-presenters
\-HomepagePresenter.php
\-templates
\-@layout.phtml
\-Homepage
Ale v té to asi nebude.. jinak by mi to nefungovalo ani na localhostu.
Editoval Bernard Williams (28. 12. 2009 13:58)
- Bernard Williams
- Člen | 207
Tak nakonec byl problém ve jménu šablony Default.phtml – stačilo přejmenovat na Default.phtml. Bohužel ani tak se mi aplikaci nepodařilo rozchodit. Úvodní stránka funguje, ale když kliknu na jakoukoliv jinou, tak se na stránce zobrazí chyba od Apache: „Internal Server Error“ a log na serveru je prázdný. Kde může být chyba? Nebo že bych měl špatně nastavený bootstrap.php a nelogoval mi chyba? Jak správně by měl vypadat?
- ji_ri_k
- Člen | 44
Ahoj, nastav si na tom ostrém serveru debug mód pomocí:
Debug::enable(Debug::DEVELOPMENT);
Pak by se ti měla spustit laděnka a měl by si se dostat k chybě. Nemáš náhodou chyby v názvech souborů (velikost znaků)? Jestli vyvíjíš na windows a pak to spustíš někde na linuxu, může se to stát.
- Bernard Williams
- Člen | 207
Tak chyba byla v zakomentovaném řádku RewriteBase / v .htaccess a pak ve špatné konfiguraci bootstrap.php. Pak už mi laděnka řekla, že konečná chyba je ve velikosti prvního písmena v názvu šablony. Dobrý způsob jak zabít celý den.
Všem moc děkuji za pomoc!
Bernard