Převedení staršího webu na HTTPS
- fordo.pytlik
- Člen | 26
Dobrý den
na jednom starším projektu nasazujeme https, ale bohužel projekt je to starší – obsahuje spoustu balastu a tak potřebuji web nejdřív „otestovat“ v živém prostředí.
Máme web http://www.example.com
, pokud v prohlížeči
přepíšu na https://www.example.com
, tak se automaticky
přesměruje na web bez https. Jasně, jedná se tedy o kaninozaci,
kterou můžeme snadno vypnout, ale to (asi) nechceme – rozbije nám to bude
odkazy a seo.
Pokud do nějaké routy přidám flaq secured,
tak je problém v tom, že web obsahuje spoustu balastu, který se přestane
zobrazovat – prohlížeč většinou stopne soubory, které nejsou
zabezpečené např. http://www.example.com/file.jpg
, podobným
způsobem bohužel načítáme i JS a web úplně přestane fungovat.
Samozřejmě, řešením je projít jednotlivé výskyty, všechny upravit, případně připravit vlastní filter ale bohužel se jedná o větší web a nepůjde to najednou, celá změna bude nějakou dobu trvat… očekávám, že dřív než za týden se nám to nepovede.
Jak byste postupovali? Vypnuli kanonizaci (s tím, že to týden zas tak nevadí) / zapnuli flaq secured (s tím, že rychleji odstraníme největší problémy a zbytek dořešíme průběžně) je nějaké jiné řešení (např. vypnou kanonizaci jen pro https?), nebo jsem něco přehlédl?
- Oli
- Člen | 1215
Podle mě by mělo jít přesměrovat už v http serveru (Apache, nginx)
z http na https všechny požadavky. V nginx by to bylo takhle: https://gist.github.com/…222e8056af5c#….
Jestli tomu rozumím správně, tak pak jakýkoli požadavek, který příjde na
doménu http://example.com
se přesměruje na
https://example.com
. Budeš mít všechno na https
(s přesměrováním) a v klidu si přepíšeš
http://example.com/img.jpg
na https aby ses změnil toho
přesměrování. Ale bude to fungovat hned na https.
- iguana007
- Člen | 970
Já bych toto vyřešil v htaccess pomocí 301 redirectu (i pro ty statické soubory) a máš po problému. Router bych dal taky secured, aby ti to generovalo správně odkazy. Pokud Vám někdo tvrdí, že se vám rozbije ranking, seo apod., tak je to imho nesmysl, ba právě naopak třeba od google jsou weby s https hodnoceny lépe.
- Altimit
- Člen | 82
v nette to můžeš udělat jednoduše:
public static function createRouter() {
$router = new RouteList();
Route::$defaultFlags = Route::SECURED;
...
}
a pak v apache2 musíš udělat speciální přesměrování na ten
virtuální host (web.cz:443) s odkazy na certifikáty a klíče k němu
:)
měl jsem taky ten problém, ale dělá ti to nette route :)
- iguana007
- Člen | 970
Altimit napsal(a):
měl jsem taky ten problém, ale dělá ti to nette route :)
Nemám to teď jak otestovat, ale pokud toto řeší i situaci, že klient přijde na web z Google, kde jsou zatím indexovány URL s http:// a je následně přesměrován pomocí 301 redirectu na https://, tak proč ne.
Pokud ovšem ten 301 redirect neprobíhá, příp. se použije 302, tak to potom není správné řešení.
- fordo.pytlik
- Člen | 26
norbe napsal(a):
Používáme toto:
if($this->httpRequest->isSecured()) { Route::$defaultFlags = Route::SECURED; }
Děkuji, to je přesně ono.
- Altimit
- Člen | 82
ještě musíš mít tedy upravený apache (tedy web směrovaný z portu :80
na port :443) aneb jest-li máš let'sencrypt tak využij ten jejích script na
instalaci (dokáže ti to přenastavit na auto-reddirect), musíš si vytvořit
vlastní config pro danou doménu.
Poté si vytvoříš nový config na danou doménu:
Listen 443
<VirtualHost dommain(or *):443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile "/path/to/www.example.com.cert"
SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>