Přesměrování domény bez www na doménu s www

Ferda

Přesměrování domény bez www na doménu s www
« kdy: 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


Sten

Re:Přesměrování domény bez www na doménu s www
« Odpověď #1 kdy: 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.

Ferda

Re:Přesměrování domény bez www na doménu s www
« Odpověď #2 kdy: 19. 01. 2016, 02:32:34 »
Mazec dík

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Přesměrování domény bez www na doménu s www
« Odpověď #3 kdy: 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...

fedorac

Re:Přesměrování domény bez www na doménu s www
« Odpověď #4 kdy: 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


j

Re:Přesměrování domény bez www na doménu s www
« Odpověď #5 kdy: 19. 01. 2016, 09:40:37 »
A nebo se to udela spravne ... pomoci http forward ...

Dzavy

Re:Přesměrování domény bez www na doménu s www
« Odpověď #6 kdy: 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>

Re:Přesměrování domény bez www na doménu s www
« Odpověď #7 kdy: 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

j

Re:Přesměrování domény bez www na doménu s www
« Odpověď #8 kdy: 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.

Re:Přesměrování domény bez www na doménu s www
« Odpověď #9 kdy: 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...

Ferda

Re:Přesměrování domény bez www na doménu s www
« Odpověď #10 kdy: 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á ?

Jakub Žák

Re:Přesměrování domény bez www na doménu s www
« Odpověď #11 kdy: 20. 01. 2016, 09:33:35 »
To je konfigurace virtuálních serverů v Apache.

TKL

Re:Přesměrování domény bez www na doménu s www
« Odpověď #12 kdy: 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.

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Přesměrování domény bez www na doménu s www
« Odpověď #13 kdy: 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...

Re:Přesměrování domény bez www na doménu s www
« Odpověď #14 kdy: 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