Autor Zpráva
Milkys
Profil
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
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
což vrací stavový kod 404, ale nepřesměruje to na subdomena-x.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
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
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]
v .htaccessu v adresáři subdomena-x
RewriteCond %{HTTP_HOST} !^subdomena-x.domena.tld$ [NC]
RewriteRule ^(.*)$ http://subdomena-x.domena.tld/$1 [R=301,L]
To samé i v .htaccessu v adresáři subdomena-y
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
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
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
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]
To mi hlídá, aby doména byla s www.

Kajman, Davex:
Máte prosím nějaký návrh na komplexní vyřešení?
Kajman
Profil
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
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
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
Milkys:
necosubdomena-y.domena.tld/nejaky-clanek se přesměruje na www.domena.tld/nejaky-clanek

Protože jsi tam přidal řádky 16 a 17, které tam být neměly. Verze z [#13] nepřidá chybějící www. To dělají pravidla na řádku 12-15 z [#11]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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