Autor | Zpráva | ||
---|---|---|---|
Milkys Profil |
#1 · Zasláno: 8. 10. 2014, 16:23:40
Dobrý den,
Zlobí mně duplicitní záznamy v serpu typu např: w. www.domena.tld
ww.subdomena-x.domena.tld wwww.subdomena-y.domena.tld ap. Vlastnim domena.tld a mám vytvořeny subdomeny subdomena-x a subdomena-y. Preferuji verze: www.domena.tld
u subdomén preferuji verzi bez www, tzn. subdomena-x.domena.tld a subdomena-y.domena.tld. Je nežádoucí, aby se v serpu zobrazily výše uvedené záznamy, které jsem nikdy nevytvořil - nechápu jak mohly vzniknout. Vyzkoušel jsem několik pravidel a trochu jsem se v tom "ztratil". Dá se to nějakým způsobem ošetřit v .htacessech v rootu webu či adresářích příslušných subdomén? Děkuji za případné reakce. |
||
Joker Profil |
#2 · Zasláno: 8. 10. 2014, 16:25:57
Milkys:
www je taky jen subdoména, jako všechny ty ostatní. „Dá se to nějakým způsobem ošetřit v .htacessech v rootu webu či adresářích příslušných subdomén?“ Můžete je přesměrovávat na příslušnou subdoménu, v principu to bude podobné jako přesměrování z www na variantu bez www. |
||
Milkys Profil |
Joker:
To je fofr :). Takže do adresářů příslušných subdomén: cokoliv je před subdomena-x.domena.tld přesměruj na subdomena-x.domena.tld. RewriteCond %{HTTP_HOST} ^(.)subdomena-x\.domena\.tld RewriteRule (.*) http://subdomena-x.domena.tld$1 [R=301,QSA] Do rootu webu. cokoliv je před www.domena.tld přesměruj na www.domena.tld
Otestuji a písnu zda je to správné řešení. Tak to není to pravé. Když zadám např. w.subdomena-x.domena.tld/neco přesměruje to na: www.domena.tld/neco V .htaccesu v rootu mám zatím toto: RewriteCond %{HTTP_HOST} !^www.domena.tld RewriteRule ^(.*)$ http://www.domena.tld/$1 [R=301,L] Mám to asi celé nějaké rozhašené, jsem ztracen. |
||
Milkys Profil |
#4 · Zasláno: 9. 10. 2014, 21:43:42
Tak ono to není zase tak jednoduché, protože potřebuji docílit tohoto:
doména PRÁVĚ jen s www www.domena.tld
subdomény jen bez www subdomena-x.domena.tld subdomena-y.domena.tld Cokoliv se "uměle" vytvoří před těmito tvary potřebuji přesměrovat na příslušný tvar. Tzn. např.: cokoliv. www.domena.tld včetně domena.tld přesměrovat na www.domena.tld
cokoliv.subdomena-x.domena.tld přesměrovat na subdomena-x.domena.tld cokoliv.subdomena-y.domena.tld přesměrovat na subdomena-y.domena.tld Chápeme se? Může mi někdo pomoci? Předem děkuji. |
||
pharaon.jh Profil |
#5 · Zasláno: 9. 10. 2014, 21:53:00
a když se dá do každý složky kde je ta sub doména soubor .htaccess, s vyndáním www. to by nešlo
|
||
Milkys Profil |
pharaon.jh:
v .htaccessu v rootu RewriteCond %{HTTP_HOST} !^www.domena.tld$ [NC] RewriteRule ^(.*)$ http://www.domena.tld/$1 [R=301,L] RewriteCond %{HTTP_HOST} !^subdomena-x.domena.tld$ [NC] RewriteRule ^(.*)$ http://subdomena-x.domena.tld/$1 [R=301,L] RewriteCond %{HTTP_HOST} !^subdomena-y.domena.tld$ [NC] RewriteRule ^(.*)$ http://subdomena-y.domena.tld/$1 [R=301,L] Problém je právě v preferované verzi domény s www. Pokud by existovalo neco.subdomena-y.domena.tld/nejaky-clanek nepřesměruje to na požadované subdomena-y.domena.tld/nejaky-clanek, ale na www.domena.tld/nejaky-clanek , což je nežádoucí.
|
||
Davex Profil |
#7 · Zasláno: 9. 10. 2014, 22:17:30
Milkys:
Jen do jednoho .htaccess v kořenovém adresáři webu: RewriteEngine On RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} \.([^.]+\.[^.]+\.[^.]+)$ RewriteRule ^ http://%1%{REQUEST_URI} [R,NE,L] |
||
Milkys Profil |
#8 · Zasláno: 9. 10. 2014, 22:45:21
Davex:
Děkuji, to je ono. Toto bych nevypotil. Drobný detail ještě. "Cokoliv" je myšleno včetně tečky. Tzn. neco.subdomena-y.domena.tld/nejaky-clanek to teď přesměruje správně na subdomena-y.domena.tld/nejaky-clanek. To je správně necosubdomena-y.domena.tld/nejaky-clanek to teď přesměruje nesprávně na domena.tld/nejaky-clanek. To je špatně. Správně by to bylo subdomena-y.domena.tld/nejaky-clanek. S tím, že ve skutečnosti názvy subdomén jsou jednoslovné výrazy obsahující jen písmena bez pomlčky a bez čísel a jiných znaků. |
||
Kajman Profil |
#9 · Zasláno: 9. 10. 2014, 22:55:16
Milkys:
„přesměruje nesprávně“ Uvedené pravidlo v [#7] to nepřesměruje, protože tam nejsou tři tečky. Přesměrovná způsobí něco jiného. Možná si prohlížeč pamatuje nějaké staré pokusy s přesměrováním. Takže si vyčisti cache, či historii, případně to zkus v jiném prohlížeči. Pro testování není vhodné používat kód 301, jistější je 302 a až po odladění pravidel přejít na 301. |
||
Milkys Profil |
Kajman:
Zdravím Vás :). ... jistější je 302 a až po odladění pravidel přejít na 301 Logiku to má - budu si pamatovat. Přesměrovná způsobí něco jiného Ano. O nesprávné přesměrování se postaralo toto v .htaccessu v rootu: RewriteCond %{HTTP_HOST} !^www.domena.tld$ [NC] RewriteRule ^(.*)$ http://www.domena.tld/$1 [R=301,L] Kajman, Davex: Máte prosím nějaký návrh na komplexní vyřešení? |
||
Kajman Profil |
#11 · Zasláno: 10. 10. 2014, 10:19:18
Možná něco takového
RewriteEngine On #zachovani pripadneho protokolu https RewriteCond %{HTTPS} =on [NC] RewriteRule ^ - [E=protsuffix:s] #pristup pres ip4 RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ RewriteRule ^ http%{ENV:protsuffix}://www.example.com%{REQUEST_URI} [R,NE,L] #pridani www k domene 2. radu RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ RewriteRule ^ http%{ENV:protsuffix}://www.%{HTTP_HOST}%{REQUEST_URI} [R,NE,L] #odstrizeni 4. radu RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} \.([^.]+\.[^.]+\.[^.]+)$ RewriteRule ^ http%{ENV:protsuffix}://%1%{REQUEST_URI} [R,NE,L] |
||
Milkys Profil |
#12 · Zasláno: 11. 10. 2014, 13:54:46
Kajman:
Děkuji, ale včera jsem byl mimo pc. V .htaccess v rootu nyní mám: #pristup pres ip4 RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ RewriteRule ^ http://www.domena.tld%{REQUEST_URI} [R=302,NE,L] #pridani www k domene 2. radu RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)$ RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,NE,L] #odstrizeni 4. radu RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} \.([^.]+\.[^.]+\.[^.]+)$ RewriteRule ^ http://%1%{REQUEST_URI} [R=302,NE,L] RewriteCond %{HTTP_HOST} !^www.domena.tld$ [NC] RewriteRule ^(.*)$ http://www.domena.tld/$1 [R=302,L] necosubdomena-y.domena.tld/nejaky-clanek se přesměruje na www.domena.tld/nejaky-clanek se stavovovým kodem 404. "The requested URL /nejaky-clanek was not found on this server."
Takto by se mohlo vytvořit velké množství "404", což je nežádoucí. Kladem je, že už nevznikají duplicitní stránky. Ten článek na serveru je, ovšem v adresáři subdomena-y. Domnívám se, že by se správně mělo přesměrovat na subdomena-y.domena.tld/nejaky-clanek Subdomény na domena.tld mám jen 3. Možná by pomohlo dát nějak do podmínky jejich přesné názvy. Názvy subdomén jsou jednoslovné výrazy obsahující jen malá písmena bez diakritiky, bez pomlčky, bez čísel a jiných znaků. Dalo by se to prosím nějak vyřešit? |
||
Davex Profil |
Milkys:
Pokud jsou to jenom 3 subdomény, tak je nejlepší udělat seznam v regulárním výrazu. RewriteEngine On #zachovani pripadneho protokolu https RewriteCond %{HTTPS} =on [NC] RewriteRule ^ - [E=protsuffix:s] RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{HTTP_HOST} .((?:www|subdomena-x|subdomena-y)\.example\.com)$ RewriteRule ^ http%{ENV:protsuffix}://%1%{REQUEST_URI} [R,NE,L] |
||
Milkys Profil |
#14 · Zasláno: 11. 10. 2014, 14:53:43
Davex:
To je přesně ono. Funguje podle představ. Vyřešeno. Pánové, vřelé díky. Přeji hezkou sobotu. |
||
Kajman Profil |
#15 · Zasláno: 11. 10. 2014, 18:28:28
|
||
Časová prodleva: 10 let
|
0