Autor | Zpráva | ||
---|---|---|---|
miamia Profil |
prosím Vás mám tento htaccess
Options +FollowSymLinks -Multiviews RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^www\.domena\.sk [NC,OR] RewriteCond %{HTTP_HOST} ^domena\.sk [NC] RewriteCond %{DOCUMENT_ROOT}/x/a/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/x/a/$1 -d RewriteRule (.*) /x/a/$1 [L] RewriteCond %{HTTP_HOST} !^www\.domena\.sk [NC] RewriteCond %{HTTP_HOST} ^([^.]+)\.domena\.sk$ RewriteCond %{DOCUMENT_ROOT}/x/b/%1/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/x/b/%1/$1 -d RewriteRule (.*) /x/b/%1/$1 [L] Ako v ňom nahradím všetky výskyty "domena\.sk" (spolu 4) tak, aby sa táto hodnota automaticky doplnila podľa toho, aká doména je zadaná do prehľadavača??? teda aby som to nemusel vždy prepisovať podľa toho, v akom priečinku sa htaccess nachadza.diky moc |
||
Davex Profil |
#2 · Zasláno: 30. 12. 2010, 23:33:07 · Upravil/a: Davex
Doména jde získat z podmínky a dosadit do cesty asi nějak takto (netestováno):
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.[^.]+)$ [NC] RewriteCond %{DOCUMENT_ROOT}/x/%1/www/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/x/%1/www/$1 -d RewriteRule (.*) /x/%1/www/$1 [L] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+\.[^.]+)$ RewriteCond %{DOCUMENT_ROOT}/x/%2/%1/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/x/%2/%1/$1 -d RewriteRule (.*) /x/%2/%1/$1 [L] Cesta pro subdoménu musí vypadat nějak takto: /x/domena.sk/subdomena/adresar/soubor. |
||
miamia Profil |
#3 · Zasláno: 31. 12. 2010, 16:00:55
diky za radu, nahradil som to tmto sposobom:
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.[^.]+)$ [NC,OR] RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ RewriteCond %{HTTP_HOST} !^(?:www\.)?([^.]+\.[^.]+)$ [NC] RewriteCond %{HTTP_HOST} ^([^.]+)(\.[^.]+\.[^.]+)$ |
||
Davex Profil |
#4 · Zasláno: 31. 12. 2010, 17:29:58
miamia:
„nahradil som to tmto sposobom“ Proč? Něco nefungovalo? V prvním případě je zbytečné zdvojovat regulární výraz, protože ten druhý je již obsažen v prvním. Druhý případ je také zbytečně zkomplikovaný - v první podmínce stačí vyloučit jen www na začátku, protože druhému výrazu vyhoví pouze doménové jméno obsahující dvě tečky. |
||
miamia Profil |
#5 · Zasláno: 2. 1. 2011, 20:29:16 · Upravil/a: miamia
pravdupovcediac nie som expert na tie výrazy, preto som tam dal tie podmienky asi komplikovanejšie. Na vysvetlenie. strukturu mam takuto folder/root/web a folder/root/sub. Doména je nasmerovaná do /folder/, kde je htaccess s týmto kódom a on smeruje požiadavky ďalej do adresárov- momentálne mi väčšina funguje, ale mám zásadný problém v tomto htaccess:
# ak je www RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.[^.]+)$ [NC,OR] # ak je domena bez www zadana, ale bez subdomeny RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ RewriteRule (.*) /root/web/$1 [QSA,L] # ak subdomena neni www RewriteCond %{HTTP_HOST} !^(?:www\.)?([^.]+\.[^.]+)$ [NC] # vyextrahuj subdomenu do %1 RewriteCond %{HTTP_HOST} ^([^.]+)(\.[^.]+\.[^.]+)$ RewriteRule (.*) /root/sub/%1/$1 [QSA,L] PROBLÉM: Mojim problémom je, že pokiaľ v /root/web/ nemám htaccess, tak dostávam internal server error. ak ale tam vložím htaccess s riadkom RewriteEngine on, všetko ide ok. v čom robím prosím chybu? tiež som odstránil z pôvodného riadky (išli by v tomto prípade pred riadok č.5) RewriteCond %{DOCUMENT_ROOT}/root/web/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/root/web/$1 -d lebo keď tam boli, tak mi nefungovali podmienky v /root/web/ htaccess (napr. zadal som domena.sk/ss a ono hladalo folder "ss/" namiesto toho, aby zohľadnilo podmienku v htaccess root/web, kde som mal napísané, že "ss" má smerovať na súbor old.html) P.S. skúsim to otestovať neskôr aj s pôvodnými tvojimi úpravami, no teraz zatiaľ väčšina vecí ide, tak by som najradšej rozchodil ešte ten problém, čo som popísal vyššie a následne potom to preskúšam s tými pôvodnými jednoduchšími podmienkami. v každom prípade vopred diky za pomoc. |
||
Davex Profil |
#6 · Zasláno: 2. 1. 2011, 21:15:46
Kompletní kód by měl vypadat asi takto. Zjednodušil jsem regulární výrazy a přidal tam ochranu proti zacyklení, které způsobuje tu chybu 500 Internal Server Error.
RewriteEngine On # nezacyklit RewriteRule ^root/ - [S=99] # ak je www nebo domena bez subdomeny RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.[^.]+)$ [NC] RewriteRule (.*) /root/web/$1 [QSA,L] # ak subdomena neni www RewriteCond %{HTTP_HOST} !^www\. [NC] # vyextrahuj subdomenu do %1 RewriteCond %{HTTP_HOST} ^([^.]+)\.[^.]+\.[^.]+$ RewriteRule (.*) /root/sub/%1/$1 [QSA,L] |
||
miamia Profil |
#7 · Zasláno: 2. 1. 2011, 22:46:05 · Upravil/a: miamia
no supeeeer! paráda, ďakujem pekne. už to väčšinou robí presne to, čo by malo.
mám už len zopár vecí, ktoré sa pokúšam ošetriť: -problémom zostáva, že keď som v joomle v adresáry /web zapol generovanie sef urls, tak odkazy nie sú domena.sk/fotogaleria ale domena.sk/root/web/fotogaleria, co je značný problém. nechápem, prečo sa tam pridáva tá časť "root/web/" -ak otvorím www.domena.sk/root/ tak sa zobrazí FORBIDDEN, teoreticky ok, ale lepšie by bolo, aby presmerovalo adresu do základného www.domena.sk (bez /root/ na konci) -ak otvorím neexistsub.domena.sk tak Not Found, tu by bolo fajn rovnaké riešenie, ako v predošlom kroku - presmerovať adresu do základného www.domena.sk. ak www.domena.sk/aaa a folder aaa existuje, tak prepíše adresu na www.domena.sk/root/web/aaa/ bolo by vhodné, aby neprepísalo na root/web/aaa/, ale aby to nechalo len tak a zobrazilo povedzme hlásenie, že nenájdené (rovnako by sa to malo chovať aj pod subdoménami). myslím, že ak by sa týchto pár vecí dalo ošetriť, už by to mohlo byť z veľkej časti fajn. diky za tvoj čas. |
||
Davex Profil |
#8 · Zasláno: 3. 1. 2011, 20:09:03 · Upravil/a: Davex
miamia:
ad 1) „nechápem, prečo sa tam pridáva tá časť "root/web/"“ Joomla v tom adresáři je, a proto do něj vytváří odkazy. Musí se jí dát nějak najevo, že má odkazy vytvářet zkrácené, ale s konfigurací serveru to nesouvisí. ad 2) a 3) „ak otvorím w>ww.domena.sk/root/ tak sa zobrazí FORBIDDEN“ „ak otvorím neexistsub.domena.sk tak Not Found“ Ty chyby jsou naprosto v pořádku. Pokud není k něčemu přístup nebo to nikdy neexistovalo, tak se má zobrazit chyba a ne přesměrovat. ad 4) „ak w>ww.domena.sk/aaa a folder aaa existuje, tak prepíše adresu na w>ww.domena.sk/root/web/aaa/“ Řešení tohoto problému jsem naznačil v sousedním vlákně mod_rewrite - subdomény - hosting wedos. Stačí přidat pravidlo před ostatní a upravit cestu v regulárním výrazu. |
||
miamia Profil |
#9 · Zasláno: 4. 1. 2011, 12:45:47
pridal som
RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule ^root/web/([a-z0-9-]+)/(.*)$ /$2 [R,L] za RewriteRule ^root/ - [S=99] ale stále nič. :( |
||
Davex Profil |
#10 · Zasláno: 4. 1. 2011, 18:29:57 · Upravil/a: Davex
miamia:
„za RewriteRule ^root/ - [S=99] ale stále nič. :(“ Patří před toto pravidlo, protože ono zastavuje provádění dalších pravidel pro cestu začínající na /root/ . Také bude vhodná úprava regulárního výrazu pro variantu s www i subdoménou: RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule ^root/(web|sub/[a-z0-9-]+)/(.*)$ /$2 [R,L] |
||
miamia Profil |
#11 · Zasláno: 4. 1. 2011, 21:10:29
hm, skúšal som pred i za a stále žiaden efekt.
takto vyzerá môj terajší htaccess RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule ^root/(web|sub/[a-z0-9-]+)/(.*)$ /$2 [R,L] # nezacyklit RewriteRule ^root/ - [S=99] # ak je www nebo domena bez subdomeny RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+\.[^.]+)$ [NC] RewriteRule (.*) /root/web/$1 [QSA,L] # ak subdomena neni www RewriteCond %{HTTP_HOST} !^www\. [NC] # vyextrahuj subdomenu do %1 RewriteCond %{HTTP_HOST} ^([^.]+)\.[^.]+\.[^.]+$ RewriteRule (.*) /root/sub/%1/$1 [QSA,L] |
||
Davex Profil |
#12 · Zasláno: 5. 1. 2011, 19:25:59
Pokud je v adresáři /root/web/ také soubor .htaccess s mod_rewrite pravidly, tak se vykonají pouze tato pravidla a ostatní se budou ignorovat. Bude nutné přidat přesměrování ještě do všech souborů .htaccess u subdomén, která mají vlastní pravidla.
RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_URI} ^/root/ RewriteRule ^(.*)$ /$1 [R,L] Vidíš sám, že tento způsob vytváření subdomén pomocí mod_rewrite pravidel v souboru .htaccess je nevhodný a přináší spoustu problémů. Nedoporučuji ho používat. |
||
miamia Profil |
#13 · Zasláno: 5. 1. 2011, 20:20:53
no teda, máš pravdu, prináša to samé úskalia. zaujímavé je, že im to na tom hostingu wedos funguje. hm, keby sa tak podelili s tým, ako to robia.
ale v každom prípade Ti veľmi pekne ďakujem za poradenie. |
||
Davex Profil |
#14 · Zasláno: 5. 1. 2011, 20:40:59
miamia:
„zaujímavé je, že im to na tom hostingu wedos funguje“ Domnívám se, že subdomény tam víc nefungují než fungují a že časem budou muset zavést podporu subdomén stejně jako na každém normálním hostingu. Ale nebudu to víc rozebírat - je to mimo téma. |
||
Časová prodleva: 14 let
|
0