Autor Zpráva
Xperia
Profil
Ahoj,

měl bych na vás prosbu :)

Na Wedosu mám jejich standardní .htaccess (viz dole) pro aliasy a subdomény a má představa je ta, že:
- pokud je v seznamu vyjímek - např. pravidlo před následujícím (tři weby např. x.domena1.cz), směruje vždy do adresáře domains/x.domena1.cz/ (subdoména nebo i jen doména)
- pokud není v seznamu vyjímek, nasměruje to automaticky do jediného adresáře (zde se bude generovat obsah podle $_SERVER proměnných

Je to reálné? Díky moc

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]
Kajman
Profil
Pokud neuděláte k doménám příslušné adresáře, zůstanou takové požadavky v hlavním adresáři.
Xperia
Profil
Kajmane, prosím Vás, jak výše zmíněný htaccess nastavit tak, aby se každá doména i subdoména, které bude chybět příslušný adresář, přesměroval na verzi s www.?

Když jsem přidal toto, tak to přesměrování šlo pouze pro domény (subdomény ne)a navíc tu vznikl ten problém, že u domény i subdomény, kde adresář existuje, se změní URL adresa na http://www.domena.cz/domains/domena.cz

RewriteCond %{HTTP_HOST} ^([^.]*)\.([^.]*)$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,QSA,L]

Děkuji za pomoc
Kajman
Profil
Možná na konci něco jako
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,NE,L]
Xperia
Profil
Funguje to skvěle pokud adresář neexistuje, pokud ano, přesměruje ho to na http://www.domena.cz/domains/domena.cz
Kajman
Profil
Aha, na řádcích 10, 17, 21 a 25 není flag L. Zkuste tedy první podmínku na redirect_status nahradit za
RewriteCond %{REQUEST_URI} !^/?(domains|subdom)/
Xperia
Profil
Přidáno, problém přetrvává a navíc se to vše zacyklí.
Kajman
Profil
Pokud se do nekonečna nepřidává www.www.www..., tak nebude problém v samotném pravidle, ale v kombinaci s jiným přesměrováním. Mezi jakými adresami se to cyklí?

Nejjednodušší bude asi kontaktovat podporu.
Xperia
Profil
Kajmane, tak tedy nebudeme to hrotit, když jde asi o tři domény :-)

Jak to napevno nastavím tak, aby domena1.cz (s www ale i bez) vždy šla do správného adresáře /domains/domena1.cz a ostatní zbytek htaccess ignorovalo?

Děkuji moc :-)
Kajman
Profil
Zkusil bych něco takového.
#nedoplnovat lomitka
DirectorySlash Off

RewriteEngine On

#zakazani url s domains v adrese, kdyz to zlobi, tak zapoznamkovat nebo smazat
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^/?domains/ - [F]

#zamezeni vnitrniho cykleni pro jinou domenu
RewriteRule ^/?domains/ - [L]

#vynuceni www, kdyz to zlobi, tak zapoznamkovat nebo smazat
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,NE,L]
 
# jen konkretni domena, vice domen je mozne zapsat do druhe zavorky s operatorem |
RewriteCond %{HTTP_HOST} ^(www\.)?(domena1\.cz)$
RewriteRule ^(.*)$ domains/%2/$1 [DPI, L]
Xperia
Profil
Nastavil jsem to takto a zatim to funguje :-) Diky moc Kajmane za veskerou pomoc

# WEB 1
RewriteCond %{HTTP_HOST} ^(www\.)?domena.cz$
RewriteCond %{REQUEST_URI} !^/domains/domena.cz/
RewriteRule (.*) /$1 [L]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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