Wedos – No route for HTTP request

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

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

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

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

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

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

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.