HTTPS Route – 404 Not Found
- pseudonym
- Člen | 57
Ahojte,
hľadal som, dokonca som aj našiel, len mi to nepomohlo (https://forum.nette.org/…resmerovavat).
Potrebujem vo svojej aplikácii použiť HTTPS routy, v bootstrap.php som v routeri nastavil príznak Route::SECURED a teda keď idem na adresu, ktorú mám v routeri, presmeruje ma na HTTPS na čo Apache vyhodí 404 Not Found. Keď mám tú istú adresu s tými istými parametrami ako HTTP (bez príznaku Route::SECURED), tak to funguje. Neviete niekto poradiť, kde by mohol byť problém?
bootstrap.php
$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$container->router[] = $serviceRouter = new RouteList('Service');
$serviceRouter[] = new Route('service/<action>[/<id>]', 'Default:default', Route::SECURED);
//ostatne definicie rout
//FrontModule, AdminModule ...
- enumag
- Člen | 2118
Máš tam mod_ssl? Osobně používám tohle, to mi vypne HTTPS na localhostu, kde mod_ssl nemám.
$secured = (function_exists('apache_get_modules') && in_array('mod_ssl', apache_get_modules())) ? Route::SECURED : 0;
$serviceRouter[] = new Route('service/<action>[/<id>]', 'Default:default', $secured);
Editoval enumag (9. 1. 2013 15:02)
- pseudonym
- Člen | 57
Super, už to funguje, stačilo aktivovať mod_ssl, ďakujem za pomoc.
Ešte by ma zaujímalo, či je nejako možné konkrétny modul obmedziť iba na HTTPS komunikáciu. Totižto keď teraz zadám http alebo https, tak obe mi to zoberie a funguje to. V bootstrape mám presne to isté, čo som písal v prvom príspevku:
$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$container->router[] = $serviceRouter = new RouteList('Service');
$serviceRouter[] = new Route('service/<action>[/<id>]', 'Default:default', Route::SECURED);
//ostatne definicie rout
//FrontModule, AdminModule ...
- pseudonym
- Člen | 57
Na úrovni presenteru to tak funguje, ale akonáhle zadám action, tak ma automaticky nepresmeruje – je potrebné zadávať pre každú akciu vlastnú route?
Možno sa ten server z toho potrebuje len spamätať. Každopádne, ak sa mi s tým niečo podarí spraviť, budem to tu aktualizovať (pre prípad, že by mal niekto v budúcnosti podobný problém).
- pseudonym
- Člen | 57
Čiže, v prípade keď zadám do adresy len http://domena.sk/module/, kde
mám pri tomto module v boostrap.php
príznak secured, presmeruje
ma priamo na https. Ak zadám http://domena.sk/module/action/, tak ma automaticky na https
nepresmeruje. Funguje to keď zadám https://domena.sk/module/action/, ale z http na https ma
automaticky nesmeruje. V paneli s routami som si všimol, že pri oboch
prípadoch mi vypíše možnosť „may“, že sa to môže pravdepodobne
mýliť s inou routou:
may Route <action>[/<id>] presenter = Default
action = default
id = NULL
Front Front:Default:module
id = action
samozrejme v tomto prípade je „module“ môj modul a „action“ je akcia z adresy http://domena.sk/module/action/
- pseudonym
- Člen | 57
Routy, ktoré mám v bootstrap.php
$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$container->router[] = $serviceRouter = new RouteList('Service');
$serviceRouter[] = new Route('service/<action>', 'Default:default', Route::SECURED);
$container->router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin', 'Default:');
$adminRouter[] = new Route('zakaznicka-zona/<presenter>/<action>', 'Default:');
$container->router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('kampus/[poschodie/<id>]', 'Reality:kampus');
$frontRouter[] = new Route('kampus/byt[/<id>]', 'Reality:detail');
$frontRouter[] = new Route('kampus/<action>[/<id>]', 'Reality:default');
$frontRouter[] = new Route('galeria/<action>[/<id>]', 'Gallery:default');
$frontRouter[] = new Route('<action>[/<id>]', 'Default:default');
- pseudonym
- Člen | 57
Tá, ktorá je v tomto príspevku: https://forum.nette.org/…04-not-found#…
$frontRouter[] = new Route('<action>[/<id>]', 'Default:default');
–
pri tejto je napísané MAY
$serviceRouter[] = new Route('service/<action>', 'Default:default', Route::SECURED);
–
pri tejto YES