Čus,
Po internetu koluje hodně variant na to jak přesměrovat doménu na www ale mají menší odchylky.
Znaky: "!" "^" atd.
Dokáže mně někdo najít a popsat proč, který je správný a univerzální zápis
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html
RewriteEngine On
RewriteCond %{HTTP_HOST} !www\.(.*)
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html
RewriteEngine On
RewriteCond %{HTTP_HOST} www\.(.*)
RewriteRule !^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html
První a druhý se budou chovat totožně, pokud tam nebudete mít domény končící „www“, třeba „foowww.bar“ (první v takovém případě bude fungovat dobře, druhý nebude přesměrovávat). Třetí je špatně, pokusí se přesměrovat „www.bar“ na „www.www.bar“, ale jen „bar“ přesměrovávat nebude.
Co se týká znaků ! a ^:
! znamená negaci, tj. udělej to, pokud to neodpovídá. Ve třetím případě chybí, tedy to pravidlo říká, udělej to, pokud doména obsahuje „www.“.
^ označuje začátek textu (resp. řádku). „www\.“ zachytí jakoukoliv doménu obsahující „www.“, včetně třeba „foowww.bar“¸či „foo.www.bar“. „^www\.“ naproti tomu říká, že to to jméno musí začínat (ne jen obsahovat) „www.“. Dohromady „!^www\.“ tedy říká, že to jméno nesmí začínat „www.“ (ale může to obsahovat kdekoliv jinde), aby se pravidlo uplatnilo.