dvě verze projektu – část http a část https (dvě složky)

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

Ahoj, řeším zvláštní problém – můj projekt bude mít část http a část https. Na hostingu k tomu mám dvě složky projekt a projekt-ssl

Podle toho zda user vloží adresu http nebo https ho hosting automaticky hodí do správné složky.

Ale potřeboval bych vědět, zda půjde toto řešení:

Routery budou v obou verzích stejné (routy pro https budou mít Route::SECURED).Ale přitom projekt ve složce projekt-ssl nebude obsahovat presentery a šablony pro non-ssl verzi a naopak… Bude fungovat směrování, nebo to nette nezkousne a budu muset mít ssl prezentery i v non-ssl verzi a naopak?

Díky

P.S.: nemohu zatím prakticky vyzkoušet a proto se ptám…Neptejte se, proč takovéto řešení – to je prostě zadání… :-)

Editoval n.u.r.v. (8. 1. 2014 13:10)

akadlec
Člen | 1326
+
0
-

A co dát do těch složek jen index.php a celou appku mít nad těma složkama? A jen si na základě nějaké příznaku zjistit že je to SSL nebo není SSL?

n.u.r.v.
Člen | 485
+
0
-

akadlec napsal(a):

A co dát do těch složek jen index.php a celou appku mít nad těma složkama? A jen si na základě nějaké příznaku zjistit že je to SSL nebo není SSL?

Tam je totiž ještě jeden problém – ať dám https nebo http, tak pořád mi php vypíše, že je to port 80. Problém tu už několik userů popisovali v sekci routování…Takže já nepoznám zda user použil ssl nebo ne… Je nastaveno, že když user použije https, tak ho hostink přesměruje na složku projekt-ssl (a naopak)

akadlec
Člen | 1326
+
0
-

Tak si v index.php zadefinuj nějakou konstantu SSL_ENABLED = TRUE/FALSE a můžeš to pak podle toho rozlišit co?

Majkl578
Moderator | 1364
+
0
-

Takže já nepoznám zda user použil ssl nebo ne…

Poznáš, protože dokážeš rozlišit, zda se index načítá z projekt nebo projekt-ssl. Na základě toho bys mohl do rozšíření Http\RequestFactory zanést detekci HTTPS.

n.u.r.v.
Člen | 485
+
0
-

Hmm, právě mi hosting zprovoznil betu, tak jsem mezitím zkusil mojí prvotní verzi – http jsem okleštil jen na základ, https verze obsahuje vše a router mají obě verze stejné. Bohužel route::secured to nepřehodí, dostanu 404 a v log/access.txt je toto:

[2014–01–08 14–32–01] HTTP code 404: Cannot load presenter ‚Account:Sign‘, class ‚App\Modules\Account\SignPresenter‘ was not found in ‚/www/project/www/stable/app/AccountModule/presenters/SignPresenter.php‘. in /www/project/www/stable/vendor/nette/nette/Nette/Application/Application.php:125

Takže buď bude vše v https, nebo některá z Vašich navrhovaných metod…

Edit: problém taky je, že i když dám vše do jedné složky a do routeru dám Route::SECURED tak stejně mi funguje http i https – nedojde k přehození

Editoval n.u.r.v. (8. 1. 2014 14:56)

akadlec
Člen | 1326
+
0
-

ty se snažíš vytvořit routu z nezabezbečené na zabezpečenou?

n.u.r.v.
Člen | 485
+
0
-

akadlec napsal(a):

ty se snažíš vytvořit routu z nezabezbečené na zabezpečenou?

Na hostingu je toto:

složka project (http) → když se zadá http://www.project.cz, tak to jde sem
složka project-ssl (https, zaplacený certifikát) → když se zadá https://www.project.cz, tak to jde sem

můj projekt má většinu funkcí a stránek dostupných až po přihlášení, tedy i login (což je i domovská stránka, když není user přihlášený), už musí být https (složka project-ssl). Ale když dám například stránku o projektu, kontakty, a ještě asi další 3, tak ty jsou bez loginu a potřebuji je mít bez https – tedy ve složce project.

A teď potřebuji udělat, když kliknu na domovské stránce (login, https) na odkaz „o projektu“, tak aby mě to hodilo na http. A naopak, když budu na stránce „o projektu“ a kliknu na homepage, tak abych se dostal na login https.

Také potřebuji, abych neměl ty stejné presentery, latte, repository v obou složkách, ale aby v každé složce byly jen ty věci, které jsou potřebné pro zobrazení dané stránky

Další věc je, že na hostingu to je zařízené tak, že port se mi vždy zobrazí 80 (ne 443).

Editoval n.u.r.v. (8. 1. 2014 18:25)

akadlec
Člen | 1326
+
0
-

proč to tedy neuděláš jak jsem psal výše? Do složek project a project-ssl si dej jen index.php a nic více a celou app měj nad těmito složkami, tudíž vše máš pro oba přístupy společné a to zda tam má být http či https i urči routerem/linky ne?

n.u.r.v.
Člen | 485
+
0
-

akadlec napsal(a):

proč to tedy neuděláš jak jsem psal výše? Do složek project a project-ssl si dej jen index.php a nic více a celou app měj nad těmito složkami, tudíž vše máš pro oba přístupy společné a to zda tam má být http či https i urči routerem/linky ne?

zkusím to…

n.u.r.v.
Člen | 485
+
0
-

akadlec napsal(a):

proč to tedy neuděláš jak jsem psal výše? Do složek project a project-ssl si dej jen index.php a nic více a celou app měj nad těmito složkami, tudíž vše máš pro oba přístupy společné a to zda tam má být http či https i urči routerem/linky ne?

Ještě pro jistotu -
nakonec mi tedy vzniknou tyto složky (např.):

  • project -index.php
  • project-ssl -index.php
  • project-master -zde bude hlavní projekt s nette

do těch dvou indexů dám napevno odkaz na mou aplikaci, tedy ve složce project bude index s přesměrováním na http://www.project-master.cz?… a ve složce project-ssl bude v indexu přesměrování na https://project-master.cz?….

Je to tak? Pak ale ještě nevím, jak zařídím, že když user bude v https části a klikne např. na odkaz „o projektu“ (který není ssl), jak ho dostanu na http verzi (jedině mě napadá dát napevno odkaz, protože v routeru nemá vliv přítomnost/nepřítomnost Route::SECURED)

akadlec
Člen | 1326
+
0
-

Ne, žádné odkazy. Budeš tam mít klasický index.php co je u nette, jen mu upravíš cestu k bootsrapu který dáš třeba do toho project-master.