htaccess – nasměrování do podadresáře

Tento komunitní článek je aktuální k 29. 8. 2019.

Při zřízení webhostingu nahrajeme do vašeho adresáře www soubor .htaccess s našimi výchozími pravidly pro nasměrování subdomén do podadresářů a nasměrování aliasů do podadresářů. Může se však stát, že vám tato naše pravidla nevyhovují, protože potřebujete mít jinak uspořádanou adresářovou strukturu. V takovém případě si můžete napsat pravidla vlastní, v nichž můžete explicitně uvést která doména má skončit ve kterém adresáři.

Pravidla umístěte do souboru .htaccess v adresáři www ve vašem webhostingu.

Příklad 1

Chceme, aby subdoména franta.example.com měla svůj obsah v podadresáři www/franta

RewriteCond %{HTTP_HOST} ^franta.example.com$
RewriteCond %{REQUEST_URI} !^/franta/
RewriteRule (.*) /franta/$1 [L]

První podmínka určuje doménu v URL adrese, druhá podmínka zabraňuje zacyklení přepisovacích pravidel, třetí řádek provede samotné přepsání.

Příklad 2

Chceme-li různé další domény do různých dalších podadresářů, uvedeme tolik pravidel, kolik je potřeba:

RewriteCond %{HTTP_HOST} ^www.nejaky-alias.com$
RewriteCond %{REQUEST_URI} !^/nejaky/adresar/
RewriteRule (.*) /nejaky/adresar/$1 [L]

RewriteCond %{HTTP_HOST} ^subdomena.nejake-domeny.com$
RewriteCond %{REQUEST_URI} !^/nejaky/jiny/adresar/
RewriteRule (.*) /nejaky/jiny/adresar/$1 [L]

Příklad 3

Pokud chceme, aby to fungovalo např. pro nějakou doménu s www na začátku i bez toho, můžeme před název bez www uvést (www\.)? – to znamená, že se „www.“ může a nemusí na začátku vyskytovat. Níže uvedené pravidlo tedy bude fungovat pro doménu www.subdomena.nejake.domeny.com i pro subdomena.nejake.domeny.com.

RewriteCond %{HTTP_HOST} ^(www\.)?subdomena.nejake-domeny.com$
RewriteCond %{REQUEST_URI} !^/nejaky/jiny/adresar/
RewriteRule (.*) /nejaky/jiny/adresar/$1 [L]

.htaccess pro instalátor aplikací

Při použití našeho instalátoru aplikací doporučujeme mít náš výchozí /www/.htaccess soubor. V opačném případě vám instalátor bude hlásit „Pravděpodobně nepoužíváte náš výchozí .htaccess„. Po zřízení jej najdete na každém webhostingu, případně jeho obsah uvádíme zde:

# 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: https://kb.wedos.com/cs/webhosting/htaccess/htaccess-na-webhostingu

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]

Pokud máte stále s instalací problémy, zkuste použít řešení známých problémů.

Časté dotazy

Při instalaci aplikace vidím chybu „Pravděpodobně nepoužíváte náš výchozí .htaccess“

Obnovte si náš výchozí .htaccess soubor.