Autor | Zpráva | ||
---|---|---|---|
andynewcastleth Profil |
#1 · Zasláno: 22. 10. 2019, 18:23:51
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 |
#3 · Zasláno: 22. 10. 2019, 20:12:26
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 |
#4 · Zasláno: 22. 10. 2019, 21:11:50
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 * |
#5 · Zasláno: 22. 10. 2019, 23:35:50
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 |
#6 · Zasláno: 23. 10. 2019, 00:21:51
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 |
#8 · Zasláno: 23. 10. 2019, 07:25:05
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 |
#9 · Zasláno: 23. 10. 2019, 09:32:00
andynewcastleth:
Pozor, při uvedeném doplnění www v [#7] se zahodí veškerá cesta za doménou. |
||
andynewcastleth Profil |
#10 · Zasláno: 23. 10. 2019, 13:13:11
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(); } |
||
Časová prodleva: 4 roky
|
0