Prechod z HTTP na HTTPS – redirect
- Kurtas
- Člen | 109
Ahoj,
zavadim HTTPS pridal jsem ke vsem routam SECURED flag viz
new Route('<action>[/<id>]', "Default:default", Route::SECURED);
Nette spravne presmerovava stara HTTP url na HTTPS ale pomoci 302, mel by to
delat 301 kvuli SEO ne?
Zatim to resim pres RewriteRule v .htaccess
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Takze se chci zeptat proc to nette dela 302 a jestli je to vubec dobre? Je RewriteRule spravne reseni?
Diky
- Jan Tvrdík
- Nette guru | 2595
Zrovna tohle je podle mě lepší řešit na úrovni webové serveru než na úrovní aplikace. Což nic nemění na tom, že by Nette mělo vracet 301, což podle podle zdrojového kódu taky dělá, takže by mě zajímalo, jak k té 302 dojde. Jsi schopný to diagnostikovat?
- Kurtas
- Člen | 109
Tak jsem si vsiml ze to nedela vzdy pokud mam HTTP request na URL kde neprobiha zadny redirect v ramci Nette tak to spravne presmeruje na HTTPS verzi pomoci 301
Pokud dam HTTP request na URL kde je nejaky redirect v ramci nette (zabezpecne url) tak to presmeruje na redirectovanou adresu (login) s 302 …
Spravne by mel puvodni HTTP verzi presmerovat 301 na HTTPS a pak trpeve provest redirect na login 302… no kazdopadne to poresim pres RewriteRule bude to jistejsi.
BTW: Nette 2.0.15
- Jan Tvrdík
- Nette guru | 2595
Pokud dam HTTP request na URL kde je nejaky redirect v ramci nette (zabezpecne url) tak to presmeruje na redirectovanou adresu (login) s 302 …
To je proto, že kanonizace URL probíhá standardně až po
action*
metodách, takže pokud provedeš přesměrování v
action*
, tak na kanonizaci nedojde. Dalo by se to vyřešit tak,
že zavoláš metodu canonicalize
už ve startup
a
zároveň nastavíš $this->autoCanonicalize
na
FALSE
, aby se metoda canonicalize
nevolala zbytečně
dvakrát. Nicméně řešit to na úrovni serveru je rozhodně lepší
řešení.
Nette 2.0.15
Co takhle okamžitě aktualizovat alespoň na 2.0.17? Nebo ještě lépe – věnovat jeden den migraci a přejít na 2.2.6.