Autor | Zpráva | ||
---|---|---|---|
Amunak Profil |
Jak mám napsat pravidla pro mod_rewrite tak, aby když…
přijdu z example.com se načítal obsah z adresáře /www.example.com přijdu z www.example.com se načítal obsah z adresáře /www.example.com přijdu z subdomena.example.com se načítal obsah z adresáře /subdomena.example.com přijdu z sub-subdomena.subdomena.example.com se načítal obsah z adresáře /subdomena.example.com/sub-subdomena přijdu z jina.com se načítal obsah z adresáře /www.jina.com přijdu z www.jina.com se načítal obsah z adresáře /www.jina.com přijdu z subdomena.jina.com se načítal obsah z adresáře /subdomena.jina.com přijdu z sub-subdomena.subdomena.jina.com se načítal obsah z adresáře /subdomena.jina.com/sub-subdomena …atd., a bylo to prostě univerzální. Jako základ by myslím šlo použít tohle: RewriteCond %{REQUEST_URI} !^/ RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteCond %{DOCUMENT_ROOT}/%2 -d RewriteRule (.*) /%2/$1 [L] ale moc si tím nejsem jistý. Zároveň bych chtěl taky udělat, aby se na to nedalo přistupovat přes tu původní adresářovou strukturu (aby někdo nemohl zadat třeba example.com/www.jina.com atd… |
||
Davex Profil |
#2 · Zasláno: 26. 1. 2011, 19:34:37
Nedoporučuji přepisovat do podadresářů podle domény nebo subdomény pravidly v .htaccess. Jsou s tím jenom problémy - viz htaccess nahradenie domena.sk za automatickú hodnotu.
|
||
Amunak Profil |
#3 · Zasláno: 26. 1. 2011, 20:18:19
Davex:
Prošel jsem to vlákno a myslím, že mě se zmíněné chyby netýkají Myslíš si ale tedy, že by bylo lepší to udělat "ručně" a vypsat to pro každou (sub)doménu zvlášť? Vždyť tomu většina úskalí stejně zůstane. Jak to tedy udělat tak, jak jsem chtěl? Koukal jsem na to odkazované téma, ale to co tam je se mi příliš nehodí. Díky za odpověď. |
||
Časová prodleva: 3 dny
|
|||
Amunak Profil |
#4 · Zasláno: 29. 1. 2011, 16:54:59
Davexi, poradíš mi tedy, prosím tě? Netuším, jak ty výrazy sestavit. S reguláry nejsem zrovna kamarád.
|
||
Davex Profil |
#5 · Zasláno: 30. 1. 2011, 13:37:18
Jde upravit pravidlo z odkázaného vlákna, ale protože nejsou adresáře subdomén umístěny ve společném podadresáři, tak se musí změnit i podmínka proti zacyklení (ve stylu pravidel z Soubor .htaccess - virtuální subdomény - problém).
RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.)?([^.]+\.[^.]+)$ [NC] RewriteRule .* /%1%2/$0 [L] Trochu jsem původní požadavek zjednodušil a bude se (doufám, nezkoušel jsem to) přepisovat example.com/soubor → /example.com/soubor www.example.com/soubor → /example.com/soubor subdomena.example.com/soubor → /subdomena.example.com/soubor www.subdomena.example.com/soubor → /subdomena.example.com/soubor Pro jinou subdoménu 4. řádu by se muselo ještě přidat další pravidlo: RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+\.[^.]+\.[^.]+)$ RewriteRule .* /%2/%1/$0 [L] Upozorňuji, že s tím mohou být problémy a pokud budou mít domény vlastní soubory .htaccess, tak v nich pravidla nemusí pracovat správně. |
||
Amunak Profil |
#6 · Zasláno: 31. 1. 2011, 22:36:12
Super, funguje to, obojí. Akorát se ještě zeptám, jak tam přidat přesměrování z verze bez www na verzi s www?
Ale jen u domény druhého řádu, u těch nižších bych byl radši kdyby to přesměrovávalo přesně naopak :-D Doufám, že si moc nevymýšlím. |
||
Davex Profil |
#7 · Zasláno: 1. 2. 2011, 23:02:52
Doplnění www před doménu 2. řádu - viz RewriteRule pro redirect non-www na www pro všechny domény
|
||
Časová prodleva: 13 let
|
0