.htaccess : Jak přesměrovat subdoménu „test“ do adresáře www/subdom/test/www/ ?

Vyřešeno1.26K zhlédnutíWebhosting
0

Zdravím,

nemohu přijít na to, jak upravit výchozí .htaccess tak, aby byly subdomény obecně, ale třeba i jedna konkrétní přesměrována ne do výchozího adresáře, ale do adresáře o úroveň níže.

Příklad:

Ve výchozím adresáři pro subdomény www/subdom/ mám adresář „test“ (www/subdom/test/) a .htaccess tak jak je nyní po zadání

http://test.mojedomena.cz nasměruje do www/subdom/test/. Chtěl bych ale nasměrovat do www/subdom/test/www/ abych pak mohl do adresáře www/subdom/test/ umístit skripty aplikace a adresář www/subdom/test/www/ pak použít pro veřejné soubory jako jsou obrázky a podobně.

V adresáři www/subdom/test/ bych pak pochopitelně měl .htaccess s obsahem Require all denied

Tedy chtěl byl vědět, jak výchozí .htaccess upravit tak, aby bylo přesměrování ovlivněno jen na konkrétní subdoménu a taky nebo obecně na všechny subdomény.

Děkuji!

Role: Zákazník
Otázka je uzamčena pro nové odpovědi.
RM130195 Vybral nejlepší odpověď 29. 10. 2020
0

Díky za odpověď.

V mé první odpovědi jsem označil kód v závorce jako (originál), čili původní verze .htaccess a (upraveno) jako mnou upravená verze.

OTT: Bohužel před odesláním není vidět náhled formátované verze a nelze odeslaný text ani upravit, jinak bych to třeba tučně zvýraznil.

Podle očekávání funguje jen polovina toho, co jsem chtěl.

Princip: Když si tady koupíte webhosting (neberme teď v potaz adresáře „domain“ a „subdom“), tak na máte nějakou strukturu v kořenovém (domovském) adresáři – nazvěme ho „root“. V tomhle domovském adresáři „/root/“ je pak podadresář „/root/www/“ a ten jediný je dostupný z URL adresy (např. www.tvojedomena.cz). Vše ostatní mimo tento „www“ adresář je veřejně nedostupné, takže ideální místo, kam umístit např. PHP skripty.

První část požadavku:

Když se ale pak bavíme konkrétně o adresáři „/root/subdom/“, ve kterém, když vytvořím podadresář „/root/subdom/test/“, tak celý tento adresář je pak dostupný z URL  (např. www.test.tvojedomena.cz). Chtěl jsem zachovat stejný princip jako u hlavní domény (např. www.tvojedomena.cz) a tedy aby u takové subdomény byl veřejně dostupný až adresář „/root/subdom/test/www/“ a pak by mohl adresář „/root/subdom/test/“ opět sloužit pro PHP skripty a byl by také veřejně nedostupný.

Tohoto jsem docílil tím upraveným .htaccess.

Druhá část požadavku:

Zajímalo by mě, jak by se dal .htaccess dále upravit tak, abych mohl na jedné subdoméně používat jako domovský adresář „/root/subdom/test1/“ a tento sloužil taky jako veřejný adresář dostupný z URL (takto funguje originální .htaccess) a zároveň, aby na druhé subdoméně sloužil jako domovský adresář „/root/subdom/test2/“, ale veřejně z URL by byl dostupný až „/root/subdom/test2/www/“.

Tedy chci zkombinovat obě varianty (originál) a (upraveno). Bylo by na .htacces, aby otestoval, zda v domovském adresáři subdomény „/root/subdom/test/“ existuje podadresář „/root/subdom/test/www/“ a pokud by existoval, tak by nastavil tento jako veřejně dostupný z www.test.tvojedomena.cz. A pokud by „/root/subdom/test/www/“ neexistoval, tak by nastavil jako veřejně dostupný „/root/subdom/test/“ z URL www.test.tvojedomena.cz

Je teď už více srozumitelné to, čeho bych chtěl docílit? Děkuji :).

Role: Zákazník
RM130195 Vybral nejlepší odpověď 29. 10. 2020
0

Zdá se, že se mi to podařilo upravit. Pokud je v tom nějaká chyba, tak se nechám rád poučit.

Původně je dokument root přímo v adresáři subomény, takže http://test.tvojedomena.cz/ směřuje do asresáře /www/subdom/test/.

Já tento adresář ale chci použít pro skripty webu, knihovny a další a chci, aby byl dokument root až v podadresáři „www“ tedy /www/subdom/test/www/.

Toho jsem docílil úpravou té části .htaccess souboru týkající se subdomény (originál):

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

Originál jsem změnil takto (upraveno):

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2/www/ -d
RewriteRule (.*) subdom/%2/www/$1 [DPI]

Tímto říkáme, že dokument root subdomény je v podadresáři adresáři „www“, takže http://test.tvojedomena.cz/ bude směřovat do adresáře /www/subdom/test/www/.

Stále bych však chtěl ošetřit případ, aby bylo možné používat jak originální, tak upravenou variantu zároveň. Bylo by tedy na .htaccess souboru, aby otestoval, zda v adresáři subdomény existuje podadresář „www“. Pokud by exitoval, tak by přesměroval do toho „www“ adresáře, ale pokud ne, tak by použil přesměrovaní podle originální varianty, tedy přímo do adresáře subdomény.

Role: Zákazník
RM130195 publikoval nový komentář 19. 10. 2020