Vyřešeno — vlákno je tím uzavřené a další odpovědi do něj nepřibývají.

Otázka

OK98424
OK98424 Zákazník Webhosting Vyřešeno

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

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 [apcode language=“plain“]www/subdom/[/apcode] mám adresář „test“ ([apcode language=“plain“]www/subdom/test/[/apcode]) a .htaccess tak jak je nyní po zadání

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

V adresáři [apcode language=“plain“]www/subdom/test/[/apcode] bych pak pochopitelně měl .htaccess s obsahem [apcode language=“plain“]Require all denied[/apcode]

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!

0

2 odpovědí

OK98424
OK98424 Zákazník

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):[apcode language=“plain“]

# 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]

[/apcode]

Originál jsem změnil takto (upraveno):[apcode language=“plain“]

# 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]

[/apcode]

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.

0
OK98424
OK98424 Zákazník Přijatá odpověď

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 :).

0

Máte stejný problém?

Tohle vlákno je uzavřené a odpovídat už v něm nejde. Když vám odpověď nestačí nebo se vás týká něco jiného, položte vlastní dotaz — odkaz na tohle vlákno do něj klidně vložte.