Fórum Root.cz

Hlavní témata => Server => Téma založeno: Ferda 19. 01. 2016, 01:30:41

Název: Přesměrování domény bez www na doménu s www
Přispěvatel: Ferda 19. 01. 2016, 01:30:41
Č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


Kód: [Vybrat]
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html

Kód: [Vybrat]
RewriteEngine On
RewriteCond %{HTTP_HOST} !www\.(.*)
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html

Kód: [Vybrat]
RewriteEngine On
RewriteCond %{HTTP_HOST} www\.(.*)
RewriteRule !^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Sten 19. 01. 2016, 02:17:59
Č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


Kód: [Vybrat]
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html

Kód: [Vybrat]
RewriteEngine On
RewriteCond %{HTTP_HOST} !www\.(.*)
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
DirectoryIndex /__rekonstrukce/__index.html

Kód: [Vybrat]
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.
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Ferda 19. 01. 2016, 02:32:34
Mazec dík
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Pavouk106 19. 01. 2016, 07:27:39
Počkat... Takže tyhle příklady hodí "www" i před doménu třetího řádu? To pak můžu lidem vysvětlovat jakkoliv, že "www" zdaleka neznamená povinnost...
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: fedorac 19. 01. 2016, 07:41:29
mozna jsem nepochopil, cemu ma pomoci to rewrite, ale kdyz tak zvazte zaznamy v DNS : A a CNAME, a v konfigu webserveru pak uvest vsecky varianty www,www2,...
... zda se mi to jednodussi
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: j 19. 01. 2016, 09:40:37
A nebo se to udela spravne ... pomoci http forward ...
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Dzavy 19. 01. 2016, 10:06:47
Tyhle nespolehlivy rewrite matlaniny jsem taky nikdy nechapal. Nastesti tohle proste funguje (opak Tvyho pripadu):

Kód: [Vybrat]
<VirtualHost *:80>
    ServerName dzavy.net
    DocumentRoot /home/dzavy/web/dzavy.net
</VirtualHost>

<VirtualHost *:80>
    ServerName www.dzavy.net
    Redirect 301 / http://dzavy.net/
</VirtualHost>
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: beather 19. 01. 2016, 10:19:01
Tyhle nespolehlivy rewrite matlaniny jsem taky nikdy nechapal. Nastesti tohle proste funguje (opak Tvyho pripadu):

Kód: [Vybrat]
<VirtualHost *:80>
    ServerName dzavy.net
    DocumentRoot /home/dzavy/web/dzavy.net
</VirtualHost>

<VirtualHost *:80>
    ServerName www.dzavy.net
    Redirect 301 / http://dzavy.net/
</VirtualHost>

trochu neefektivní metoda ne? :-D aneb kilometrovej konfigurák místo pár řádků ve vámi nazvaném "nespolehlivém" rewritu :-D
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: j 19. 01. 2016, 10:58:05
trochu neefektivní metoda ne? :-D aneb kilometrovej konfigurák místo pár řádků ve vámi nazvaném "nespolehlivém" rewritu :-D

Naopak, tohle je jedina spravna metoda ... protoze misto www tam muzes dat *. a proste at tam napise kdo chce co chce, posle ho to na web. Rewrite ma smysl resit, pokud menis strukturu webu a nechces aby prestaly fungovat puvodni linky. Napr. Naopak, pokud chces aby te google vyradil z vyhledavani, tak je rewrite hodne dobra cesta, protoze googlu se to bude jevit jako hromada webu s totoznym obsahem.
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: beather 19. 01. 2016, 11:06:01
Naopak, tohle je jedina spravna metoda ... protoze misto www tam muzes dat *. a proste at tam napise kdo chce co chce, posle ho to na web. Rewrite ma smysl resit, pokud menis strukturu webu a nechces aby prestaly fungovat puvodni linky. Napr. Naopak, pokud chces aby te google vyradil z vyhledavani, tak je rewrite hodne dobra cesta, protoze googlu se to bude jevit jako hromada webu s totoznym obsahem.

nějaký podklad na to s tím googlem? v rewritu jde * také efektivně použít... pokud ovšem máte více subdomen, tak u apache platí, že čte konfigurak z hora dolů a potom v tom budete mít bordel...

nikdy jsem neměl s rewritem problémy a pro přehlednost obsáhlých webů je to jediná cesta...
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Ferda 19. 01. 2016, 20:29:29
Děkuji všem stala se z toho velice zajímavá diskuze.
Přiznám se tohle jsem řešil pokaždé úpravou souboru ".htaccess"


- DNS

Kdybych to řešil pomocí DNS nejsem si jistý jestli se dá vynutit www
Když někdo zadá "test.xx" tak mu to zůstane když někdo zadá "www.test.xx" tak mu taky zůstane nebo se to dá pomocí DNS nějak vynutit ? (i pro subdomény)


- http forward

Tohle se rozhodně nepoužívá pro www je to horší metoda jak Rewrite.
Když se pak něco stane nebo potřebuješ web přesměrovat jseš v .....

jinak http forward mám rovnou u poskytovatele domény (Přesměrování v kodu stránky o tom se nebavim)


Citace
<VirtualHost *:80>
    ServerName dzavy.net
    DocumentRoot /home/dzavy/web/dzavy.net
</VirtualHost>

<VirtualHost *:80>
    ServerName www.dzavy.net
    Redirect 301 / http://dzavy.net/
</VirtualHost>

Jinak tohle vůbec neznám teda oco se jedná ?
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Jakub Žák 20. 01. 2016, 09:33:35
To je konfigurace virtuálních serverů v Apache.
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: TKL 20. 01. 2016, 12:00:12
Nepadlo tady řešení pro situaci, kdy nejsem pánem serveru a webhosting vlastní pravisla pro mod_rewrite nepodporuje (nebo jen velmi omezeně).

Pak přichází na řadu PHP (nebo něco jiného, co na serveru běží) a něco takového:

Kód: [Vybrat]
<?php
if(substr_count($_SERVER['SERVER_NAME'],"www.")==0) {
if(isset($_SERVER['HTTPS'])) {
if($_SERVER['HTTPS']=="on") {
$prot="https://";
}
} else {
$prot="http://";
}
header("Location:"$prot "www." $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] ."",TRUE,301);
}
?>


Netvrdím, že je to dokonalé, nicméně to pro většinu případů funguje a kde by to nefungovalo (např. vlastní porty pro HTTP) se to dá snadno přiohnout.
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Pavouk106 20. 01. 2016, 12:18:41
Jinak za mě - řešil bych to jako fedorac, přes DNS. Jiný řešení mi připadá úplně pošahaně složitý. Ale záleží na situaci, třeba není přístup k nastavení DNS nebo je přes někoho dalšího...
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: beather 20. 01. 2016, 12:25:22
nejjednodušší je mod rewrite... teda alespoň pro mě z hlediska přehlednosti než patlání DNS záznamů nebo kilometrové configy
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Kit 20. 01. 2016, 12:28:31
Jinak za mě - řešil bych to jako fedorac, přes DNS. Jiný řešení mi připadá úplně pošahaně složitý. Ale záleží na situaci, třeba není přístup k nastavení DNS nebo je přes někoho dalšího...

Řešení přes DNS s sebou nese riziko penalizace od vyhledávčů.
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: Ferda 20. 01. 2016, 12:30:05
Pavouk106: Muzes me napsat jak je podle tebe zpravny zapis do DNS aby to bylo i pro subdomeny a vynucene www ?
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: beather 20. 01. 2016, 12:38:42
bože totálně dopatláš DNS záznamy... takto se to nedělá..
Název: Re:Přesměrování domény bez www na doménu s www
Přispěvatel: PCnity 20. 01. 2016, 13:27:51
DNS je primarne len preklad host nemeov ("slovnych adries") na ip adresy... Ak v DNS nebude zaznam pre (bez www) domenta.tld, zbytocne sa spravi akykolvek rewrite na HTTP servry, nakolko sa tam ten request ani nedostane. Je dost pravdepodobne ze sa da takyto redirect dosiahnut aj cez TXT recordy, ale uchadza mi zmysel takej komplikacie.
Cize DNS A, alebo CNAME IMO musis mat pre oba zaznamy tak ci tak, ak ma mat ten rewrite zmysel.

Potom je to o tom ci presmerovavat, alebo nie. Vela vyhladavacov vsak berie web len pod jednym host nameom, cize by rozlicne * .domena.tld bral ako rozlicne weby a toto IMO sposobuje tu penalizaciu.