Ruzne verze jednoho webu – domena, subdomena, narodni domena

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

Zdravim,
nasledujici otazka je mozna spise filozoficka nez technicka, budu ale velmi rad, kdyz me navedete k optimalnimu reseni.

Mam jeden projekt „projekt.cz“, ktery musim rozsirit. Pozadavek na rozsireni je takovy, aby na subdomene „pod.projekt.cz“ vznikla kopie celeho webu s tim, ze se v nekterych marginalnich castech bude lisit (malinko jiny zdroj grafiky, nektere sablony jine, velmi malo funkcnosti v prezenterech jine – uplne stejny model, databaze atp.). Zaroven ma byt projekt portovan na novou domenu „projekt.com“ (a „pod.projekt.com“), ktera bude temer cistou kopii „(pod.)projektu“, jen s lokalozaci (+ lokalizace meny, narodnich nastaveni casu atp.).

Jakym zpusobem nasledujiciho chovani nejlepe dosahnout? Programovat cely projekt jako jeden slozitejsi celek, ktery si nejakym zpusobem pamatuje, ve ktere verzi a lokalozaci projektu prave je a podle toho upravuje sve chovani, nebo vytvorit 4 kopie projektu, kde chovani upravit rucne?

Da se pripade vyvoje v jednom projektu podobneho chovani dosahnout napriklad jen pomoci rout?

Diky predem za pomoc a objasneni problematiky

esorimer
Člen | 114
+
0
-

Podle mých zkušeností, tvrzení že se projekt bude lišit jen v některých marginálních věcech je jen eufemismus pro „chceme to levně“.
Pokud by šlo opravdu jen o lokalizaci, nechal bych jeden „složitější“ celek, jinak bych vytvořil v SVN (nebo gitu …) pro každou verzi extra větěv. Společné změny se pak snadno přenesou mezi větvemi a rozdíly budou v každé větvy zvlášť.

llook
Člen | 407
+
+1
-

Pokud všechny domény nasměruješ na stejný server do stejné složky, tak můžeš podle domény routovat úplně stejně, jako podle cesty, viz https://doc.nette.org/…tion/routing například:

$route = new Route('//[<lang=en>.]example.com/<presenter>/<action>',
    'Homepage:default');
elden46
Člen | 37
+
0
-

Trosku jsem postoupil s problemem, ktery jsem postoval v prvnim prispevku. Predem chci upozornit, ze jsou pro me tyto veci hodne nove (napriklad spravna konfigurace .htaccess souboru a vzajemne interakce ruznych .htaccess v ruznych adresarich) a proto se v nich asi dost ztracim a nechapu nejake souvislosti (a proto taky pisu o radu:-))

Mozna dokonce ani pozadovaneho chovani nelze dosahnout, nevim…

Vize) idealni fungovani projektu by bylo takove, abych mel pouze jeden zdrojovy kod aplikace, na ktery by se pristupovalo pomoci podstrceni obsahu htaccessem skrz subdomenu (subdomena.projekt.cz) a domenu (www.projekt.cz). V aplikaci bych si pak pouze zjistil, pristupuje-li zakaznik pres subdomenu (asi v BasePresenteru odchytavat subdomenu, co dodaji routy) a podle toho upravil kod.
Pokud clovek pristoupi do aplikace pres subdomenu, tak vsechny linky v aplikaci budou linkovany na subdomenu (tj. v subdomena.projekt.cz/clanky/list budou vsechny odkazy opet do subdomeny).

Stara routa:

function importFile($m)
$frontendRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Nova routa:

function importFile($m)
$frontendRouter[] = new Route('//[<subdomain>.]projekt.cz/<presenter>/<action>[/<id>]', 'Homepage:default');

Dosud vse v poradku, projekt nadale funguje. Jediny rozdil, ktery jsem zaznamenal je ten, ze se odkazy zacaly vypisovat jako http://projekt.cz/clanky/list namisto drivejsiho http://www.projekt.cz/clanky/list

Reseni subdomeny
Cesta k indexu aplikace je projekt_cz/www/www/index.php
Po zadani www.projekt.cz se uzivatel dostane do projekt_cz/www/, ve kterem je .htaccess, ktery zarizuje presmerovani na index (o adresar dale)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^projekt.cz$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.projekt.cz$
RewriteCond %{REQUEST_URI} !www/
RewriteRule (.*) /www/$1 [L]

Subdomena je resena pomoci .htaccessu na urovni root adresare domeny projekt_cz/

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^subdomena.projekt.cz
RewriteCond %{REQUEST_URI} !subdomena/
RewriteRule ^(.*)$ /www/www/$1 [L]

Po spusteni http://subdomena.projekt.cz se spravne dostanu do aplikace. Router mi ale jiz nevytvari korektni odkazy (nebo spise nevytvari takove odkazy, jako bych si ja predstavoval), namisto subdomena.projekt.cz/clanky/list vytvori projekt.cz/clanky/list (a tim se pak dostanuna puvodni domenu).
Navic po rucnim zadani subdomena.projekt.cz/clanky/list skonci na chybe

Not Found
The requested URL /www/index.php was not found on this server.

Mozna trochu patlam pate pres devate a micham vice problemu dohromady, presto budu rad za jakekoliv nakopnuti, ktere by me priblizilo vizi, abych nakonec nemusel subdomenu resit jako kopii cele aplikace v adresari subdomeny.
Pokud jste se docetli az sem, tak dekuji za vas cas:-)