Autor Zpráva
Jan Mazánek
Profil *
Dobrý den,

rád bych v .htaccess vynutil pro všechny domény v instalaci prefix "www.". Aktuální řešení funguje pro explicitně uvedené domény, ale obsahuje hromadu opakujícího se kódu a hlavně nefunguje obecně pro libovolné domény na dané instalaci.

Rád bych, aby řešení fungovalo přesměrovalo "domena.koncovka", "ww.domena.koncovka", "wwww.domena.koncovka" (apod.) na "www.domena.koncovka". Poradíte prosím někdo obecné řešení?

Aktuálně používáme tento kód:
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} zemedelskehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.zemedelskehaly\.cz$
    RewriteRule ^(.*)       http://www.zemedelskehaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} vyrobnihaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.vyrobnihaly\.cz$
    RewriteRule ^(.*)       http://www.vyrobnihaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} ocelovehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.ocelovehaly\.cz$
    RewriteRule ^(.*)       http://www.ocelovehaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} skladovehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.skladovehaly\.cz$
    RewriteRule ^(.*)       http://www.skladovehaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} odpadovehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.odpadovehaly\.cz$
    RewriteRule ^(.*)       http://www.odpadovehaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} leteckehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.leteckehaly\.cz$
    RewriteRule ^(.*)       http://www.leteckehaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} prodejnihaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.prodejnihaly\.cz$
    RewriteRule ^(.*)       http://www.prodejnihaly.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} prihradovevazniky\.cz$
    RewriteCond %{HTTP_HOST} !^www\.prihradovevazniky\.cz$
    RewriteRule ^(.*)       http://www.prihradovevazniky.cz/$1 [R=301,QSA,L,NE]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{HTTP_HOST} jezdeckehaly\.cz$
    RewriteCond %{HTTP_HOST} !^www\.jezdeckehaly\.cz$
    RewriteRule ^(.*)       http://www.jezdeckehaly.cz/$1 [R=301,QSA,L,NE]

Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Davex
Profil
Doplnění www před doménu by bylo jednoduché. Požadavkem „aby řešení fungovalo přesměrovalo "domena.koncovka", "ww.domena.koncovka", "wwww.domena.koncovka" (apod.)“ se to trochu komplikuje.

Obecně použitelné pravidlo pro přesměrování jakékoliv subdomény na adresu s www by mohlo vypadat asi nějak takto:
RewriteEngine On

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+)$
RewriteRule ^(.*) http://www.%1/$1 [R=301,QSA,L,NE]
Jan Mazánek
Profil *
Davex, děkuju. Implementováno, otestováno, funguje.

Omlouvám se za nepoužití preformatted v původním příspěvku. Děkuji za jeho editaci.
Petr B.
Profil *
Hojte. Můžu poprosit o popostrčení, co dělat když to vložím do htaccess a stejně to nepracuje?
Davex
Profil
Petr B.:
co dělat když to vložím do htaccess a stejně to nepracuje?
Přejmenovat soubor na .htaccess s tečkou na začátku nebo si založit vlastní téma s podrobnějším popisem (jaká pravidla a jak to nepracuje).
Jan Mazánek
Profil *
Následující modifikovaný kód by měl zachovat všechny subdomény, ale přespat na "www.domena.koncovka" doménu bez úvodního "www." a subdomény třetího řádu "w", "ww", "wwww", "wwwww"
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(|w\.|ww\.|wwww\.|wwwww\.)([^.]+\.[^.]+)$
RewriteRule ^(.*)$ http://www.%2%{REQUEST_URI} [R=301,QSA,L,NE]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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