Autor Zpráva
herout
Profil
Mám problém se subdoménami. Řešení nabízí hostingový poskytovatel následující:
RewriteEngine On

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

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


Výše uvedené mám v souboru .htaccess, na funkčnost to nemá vliv, ale problém je následující:
1) Pokud zadám blablabla.domena.tld, aniž blablabla existuje, načtou se mi stránky www.domena.tld (v příkazovém řádku je blablabla.domena.tld). Asi by bylo vhodnější, aby to vyhodilo něco jako error 404.

2) Pokud zadám subdomena.domena.cz/subdom/subdomena nic se nestane - stránky fungují jak mají, ale v příkazovém řádku zůstává subdomena.domena.cz/subdom/subdomena. Já bych ale chtěl, aby nebyly vypisovány adresáře za výpisem domény (aby to zobrazilo jen subdomena.domena.cz).

Subdomény jsou tvořeny tak, že v adresáři www (kde jsou stránky na doméně www.domena.tld) je adresář subdom, kde se vytvářejí subdomény tvorbou dalších adresářů (/www/subdom/subdomena/obsah.html). Rád bych, aby to fungovalo obecně pro jakoukoliv založenou subdoménu (po vytvoření příslušného adresáře).

Soubor .htaccess mám jen v adresáři www. Pokud ho nahraji do adresáře subdom, nic se nezmění.

Snažil jsem se všude možně najít řešení, ale protože jsem v tomto naprostý začátečník změnou obsahu souboru .htaccess se mi nikdy nepodařilo řešení najít. Pokud někdo budete mít nápad, jak to vyřešit, budu jen rád.
Davex
Profil
herout:
Řešení nabízí hostingový poskytovatel následující
Toto vytvoření subdomény pomocí mod_rewrite pravidel v souboru .htaccess se obvykle používá jen z nouze. Pokud je to jediná možnost poskytovaná hostingem, tak je to velice nešťastné, protože to pak bude zlobit přesně jako popisuješ v bodu 2).

ad 1) Pokud by neměla subdoména existovat, tak by pro ní ani neměly existovat DNS záznamy, ale dá se to řešit několika způsoby:
– odebrat hvězdičkové DNS záznamy A a CNAME a ručně přidat A nebo CNAME záznamy pouze pro existující subdomény
– neexistující subdoménu přesměrovat na existující
– server může pro neexistující subdoménu vrátit jakoukoli chybu - třeba 403 nebo 404

ad 2) Z původního URL se musí přesměrovat na požadované s ochranou proti zacyklení ve stejném souboru .htaccess jako jsou pravidla pro subdomény (měl by být v adresáři www/):
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^subdom/([a-z0-9-]+)/(.*)$ /$2 [R,L]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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