Autor Zpráva
andynewcastleth
Profil
Přecházím z HTTP na HTTPS. Prozatím testuji tento přístup v HTACCESS, který se zdá funkční:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

Na blogu Seznam jako jeden z podmínek bezchybného přechodu na HTTPS píší: "3. Pro redirect ze staré domény na novou používat zásadně HTTP status 301 “permanent redirect”.". Což tento HTACCESS splňuje nebo ne? Je tento přístup správný?
RastyAmateur
Profil
andynewcastleth:
Myslím si, že tam má být [R=301,L]. Co je tam defaultně jsem si v dokumentaci každopádně nevšiml, ale 301 hádám ne...

Jestli je tento přístup správný, asi ano. Ale svou odpověď nedokážu nijak podložit! :D
Kajman
Profil
Použil bych raději HTTP_HOST (pokud je na serveru více domén) nebo natvrdo název domény (pokud ten adresář patří jen jedné doméně).

Flag R bez čísla odpovídá statusu 302 - což je dočasné přesměrování. Pro testování pravidel je jistější 302 než 301. Je lepší tam mít hodinu, týden, měsíc 302 a dobře to odzkoušet než dát 301 hned a na něco zapomenout.

Při přesměrování vždy používejte flag NE.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=302,L,NE]
Keeehi
Profil
andynewcastleth:
Ještě jedno doporučení, přesměrování na https by mělo být provedeno před jakýmkoli přesměrováním. Pokud přesměrováváš mezi sebou varianty bez www a s www (jako že bys měl a je jedno jakým směrem) tak nejdříve by mělo proběhnout přesměrování na https bez změny těch variant a pak až následně, v druhém přesměrování to přehodit z jedné varianty na tu druhou.
N71
Profil *
Keeehi:
nejdříve by mělo proběhnout přesměrování na https bez změny těch variant
To má ale smysl pokud chceš pro kořenovou doménu ještě poslat HSTS hlavičku, jinak v tom nevidím faktický rozdíl.

A HSTS je vůbec dle mého soudu omyl, iluze bezpečnosti. Tato hlavička brzo přestane existovat, až budou prohlížeče používat https jako výchozí protokol a http jen jako fallback.
Keeehi
Profil
N71:
S tím se dá souhlasit. Ale zatím prohlížeče https jako defaultní protokol nepoužívají. A i když se těším na dobu až to bude možné a i když počet webů běžících na https stále roste, můj osobní názor je že http tu s námi ještě nějakou chvíli pobude. Třeba jen pár let. Proč ale mezi tím nepoužívat HSTS? Úskalí vidím v tom, že pokud se rozhodneš po nasazení HSTS protokol https nepoužívat, tak to může být obtížné, případně téměř nemožné. Ale když už ti web na https běží, proč by ses toho chtěl zbavovat?
andynewcastleth
Profil
V HTACCESS mám:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=302,L,NE]

A v index.php mám na prvním řádku (resp. první řádek je session_start, ale toto jde ihned za):

if($_SERVER['SERVER_NAME'] != "www.domena.cz"){ 
$kamhodit = "https://www.domena.cz/";
header("HTTP/1.1 301 Moved Permanently");
header('location: '.$kamhodit.'');
header("Connection: close");
die();
}

Tedy si myslím, že mám správný postup v přesměrování. Nejdříve HTACCESS přesměruje na HTTPS a až následně PHP přesměrovává na WWW verzi.
Taps
Profil
andynewcastleth:
přesměrování na verzi s www je možné také udělat na úrovni htaccessu. Doporučuji ke studiu mike.treba.cz/mod_rewrite-a-hezke-url
Kajman
Profil
andynewcastleth:
Pozor, při uvedeném doplnění www v [#7] se zahodí veškerá cesta za doménou.
andynewcastleth
Profil
Kajman:
Upravil jsem to tedy na:
if($_SERVER['SERVER_NAME'] != "www.domena.cz"){ 
$kamhodit = "https://www.domena.cz$_SERVER[REQUEST_URI]";
header("HTTP/1.1 301 Moved Permanently");
header('location: '.$kamhodit.'');
header("Connection: close");
die();
}

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0