Wedos – No route for HTTP request
- oskarmaniak
- Člen | 29
Zdravím,
řeším problém funkční aplikace v nette, která na hostingu savana
fungovala a po přesunu na wedos nefunguje ve chvíli kdy pomocí URL
předávám hodnoty.
Pročetl jsem celé fórum kde se řešili obdobné chyby se subdoménama, ale to nezabralo.
Chyba v laděnce:
<?php
Nette\Application\BadRequestException #404
No route for HTTP request.
....
// Setup router
38:
39:
40: $container->router = new Nette\Application\Routers\SimpleRouter('Homepage:default');
41:
42:
43:
44:
45: // Configure and run the application!
46: $container->application->run();
?>
Co jsem tak pochopil tak SimpleRouter je pro Apache ale Wedos používá něco jiného, a i uvedné přiklady jak to nastavit pro wedos to hlásilo zas jiné chyby… ty zatím nerozepisuji jelikož nevím zda to je vůbec správný směr jak to řešit.
Struktura složek:
<?php
domains
subdom
.httacces (origo wedos)
////
domains/domena.koncovka
///
app
css
....
www (tu mám prázdnou, prográmátor který stím začínal to dal do rootu)
index.php
....
?>
Obsah index.php:
<?php
// absolute filesystem path to this web root
define('WWW_DIR', __DIR__);
// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/app');
// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/libs');
// load bootstrap file
require APP_DIR . '/bootstrap.php';
?>
Celá aplikace běží, vše funguje ale až do chvíle kdy v url nepřijde proměnná hodnota která je řádně zapsaná a na hostingu Savana vše fungovalo.
<?php
index.php?uid=bflmps&presenter=Homepage&action=pass
?>
Mohu poprosit o někoho kdo podobný problém řešil, jestli by mě dokázal nasměroval správným směrem jak to vyřešit?
Děkuji předem.
- Draffix
- Člen | 146
Nějaké řešení jsem našel zde https://github.com/…edos-sandbox, ale nezkoušel jsem, takže nezaručuji funkčnost. Jinak bych zkusil třeba tohle řešení
- oskarmaniak
- Člen | 29
Díky, ono druhé řešení jsem zkoušel a zkončil jsem na chybě ihned při načtení stránky:
<?php
Class 'Route' not found
37: // Setup router
38: if (
39: function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules()) // pro Apache
40: || isset($_SERVER["NETTE_HTACCESS"]) // pro FastCGI nebo okoliv jineho kde mame flag
41: ) {
42: $container->router[] = new Route('index.php', 'Front:Home:default', Route::ONE_WAY);
43: // ...
44: } else {
45: $container->router = new SimpleRouter('Front:Home:default');
46: }
?>
Ještě zkusím ten sandbox pro wedos nějak detailněji na první pokus se mi taky nepovedl rozchodit z tou aplikací abych zjistil zda to pomohlo.
Zatím děkuji
- oskarmaniak
- Člen | 29
Tak ten sandbox pro wedos je celkově nějaký nefunkční.
Po nahrání na ftp sice se zobrazí gratulace o spuštění nette, ale když
kliknu třeba na adminer
tak vyskočí chyba:
<?php
Not Found
The requested URL /index.php was not found on this server.
?>
Teda kdybych tušil že Nette má takový problémy na Wedosu, tak tam vůbec
nemigrujem.
Ještě že v rámci 30 dní jdou vrátit peníze.
Nemůžete prosím někdo navrhnout spolehlivý webhosting kde nette jede v pohodě? Nejde ani tak o cenu ale o dostupnost, výkonné servery a velkou datovou propustnost do celého světa.
Děkuji
- Draffix
- Člen | 146
Ze začátku jsem měl s tím taky problém, ale nakonec se mi to podařilo zprovoznit. Zkusil bych stáhnout a použít obyčejný sandbox a do kořenového adresáře (kde je app, libs, log…) dát do .htaccess jen přesměrování:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1
</IfModule>
A do bootstrapu něco jako tohle:
if (
function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules()) // pro Apache
|| isset($_SERVER["NETTE_HTACCESS"]) // pro FastCGI nebo okoliv jineho kde mame flag
) {
$container->router[] = new Route... zbytek masky;
} else {
$container->router[] = new SimpleRouter('Homepage:default');
}
Samozřejmě musíte „includovat“ potřebné třídy:
use Nette\Application\Routers\Route;
use Nette\Application\Routers\SimpleRouter;
- oskarmaniak
- Člen | 29
Děkuji za snahu Draffix,
udělal jsem ony změny, přesunul index.php a další do složky www která do
teď nebyla využívána.
Nyní to nehodí error ale opět:
Not Found
The requested URL /index.php was not found on this server.
poté co se v url objeví
index.php?uid=bflmps&presenter=Homepage&action=pass
Jinak web jede až do této fáze.
Pokud to nyní hází stejnou chybu jako se speciálně upraveným
sandboxem.
Tak už nevím co by se dalo ještě upravit aby to mohlo začít chodit.