Autor Zpráva
bedrich.schindler
Profil
Dobrý den,

využívám webhostingových služeb u Wedosu a doteď jsem s nimi byl spokojený. Problém nastal v moment, kdy jsem chtěl začít používat subdomény. Z Wedosu lidem nejsou snad na následující otázku schopni odpovědět.

Wedos ve složce www v základu vytvoří .htaccess soubor s následujícím obsahem:

# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)

# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: http://kb.wedos.com/r/32/webhosting-htaccess.html

RewriteEngine On

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

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

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

Složka www obsahuje soubory domény 2. řádu, pro ukázku bude mít web adresu moje-domena.cz. Z důvodu toho, že může být na webhostingu provozováno více domén, tak obsah domény 2. řádu může být i ve složce www/domains/moje-domena.cz, což je pro některé přehlednější.

Pokud chcete vytvořit doménu třetího řádu, řekněme moje-subdomena.moje-domena.cz, tam máte dvě možnosti. Buďto vytvoříte adresář moje-subdomena.moje-domena.cz s umístěním www/domains/moje-subdomena.moje-domena.cz, což je přehlednější, protože máte všechny domény v jedné složce nebo vytvoříte složku moje-subdomena s umístěním www/subdom/moje-subdomena, což nepreferuji. Pokud byste měly totiž více domén, tak by ta subdoména platila pro všechny domény 2. řádu.

Struktura webu:

- www
-- domains
--- moje-domena.cz
--- moje-subdomena.moje-domena.cz
--- moje-druha-subdomena.moje-domena.cz
-- subdomains
-- .htaccess

Pokud chci pracovat se subdoménou, tak nastává problém v relativních adresách. Relativní adresy jsou vztažené ke složce www, takže pokud u moje-subdomena.moje-domena.cz použiji relativní adresu např. /images/001.jpg, tak je to ve skutečnosti /domains/moje-subdomena.moje-domena.cz/images/001.jpg, což nejde. Problém s fungováním nastává u řady webových aplikací.

Wedos tvrdí, že je to špatně napsaná aplikace, což můžou mít částečně pravdu, ale normálně tam nezprovozníte ani jeden CMS. Pro některé tam mají návod, jak to opravit, pro některé ne. Když to tak řeknu, tak spíše nevědí, jak na to. Např. u Endory mi to funguje bez problémů.

Je tedy možné .htaccess přepsat tak, aby relativní adresy začínaly u subdomén? Pokud ano, jste prosím někdo schopen přepsat htaccess tak, aby každá subdoména fungovala tak, že se od její složky bude odvíjet relativní adresa?

Na Wedosu o tom píší toho: http://kb.wedos.com/webhosting/aliasy-chybne-url.html
Znovu informace o tom, jak subdoménu na Wedosu fungují: http://kb.wedos.com/webhosting/samostatne-weby-aliasy.html http://kb.wedos.com/webhosting/subdomeny.html

I přes to, že neprogramuji zas tak krátce, tak toho pořád o htaccess nevím tolik, abych to zvládl napsat sám. Díky za odpovědi.
Marschmallow
Profil
Ve složce www vytvoř složku subdomains a v ní složky jako subdomény.
bedrich.schindler
Profil
Když už, tak složku subdom, ale to vůbec neřeší ten problém. I když si vytvořím subdomenu vytvořením složky ve složce subdom, tak pořád od té subdomeny nebudou odvozovány relativní adresy.
DarkMeni
Profil
Asi nenastavují DocumentRoot pro subdomény (nebo nastavují, ale blbě)

Můžeš to zkusit přes mod Rewrite, ale to pak bude přepisovat jakejkoliv přístup na tu subdomenu, takže to asi může zbytečně zatěžovat server
jakože kdyby si mohl přepsat DocumentRoot v httpd-vhosts.conf nebo někde v databázi - podle toho kde to mají, tak by to bylo asi lepší řešení

Můžeš zkusit třeba toto: http://stackoverflow.com/questions/8118941/using-htaccess-to-change-document-root
s tím, že si to trochu upravíš pro subdoménu

RewriteCond %{HTTP_HOST} tvoje-subdomena\.tvoje-domena\.cz [NC] 
RewriteCond %{REQUEST_URI} !tvoje-subdomena
RewriteRule (.*) tvoje-subdomena.tvoje-domena.cz/$1 [QSA]

nebo pro víc subdomén najednou (přes reg. výraz)

RewriteCond %{HTTP_HOST} ([^/].+)\.tvoje-domena\.cz
RewriteCond %{REQUEST_URI} !([^/].+)\.tvoje-domena\.cz
RewriteRule (.*) %1.tvoje-domena.cz/$1 [QSA]

Akorát nevim jesti to bude fungovat s tím, co už v tom htaccessu máš, ale zkusit to můžeš - přinejhoršim to nebude fungovat nebo dostaneš chybu 500 za rekruzivní přesměrování
Davex
Profil
bedrich.schindler:
V tomto ohledu je tebou používáný webhosting nekompatibilní s hodně PHP skripty. V podstatě to není chyba, ale jen nepříjemná vlastnost, která se nedá řešit úpravou přepisovacích pravidel.

Toto chování bývá způsobené tím, že si aplikace bere základ relativních adres z proměnné, která pro to není v této konfiguraci webserveru vhodná (nebo-li jinými slovy: programátor nečekal, že by to nefungovalo, protože na normálním webhostingu to přeci funguje). Musí se upravit aplikace, aby používala jinou vhodnější proměnnou (např. $_SERVER["REQUEST_URI"]).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: