Kako migrirati svoj sajt na HTTPS
Google je u avgustu 2017. poslao cirkularni mail svim vlasnicima sajta u kojem stoji obaveštenje da će, počev od oktobra 2017, Google Chrome praktično početi da “vrišti” ako na sajtu imate bilo kakvo tekstualno polje a sajt se učitava preko HTTP protokola. Savetuje se, naravno, da sajt prebacite na HTTPS protokol.
U ovom članku ćemo se pozabaviti time kako da to uradite.
Ovaj članak će opisati detaljno postupak migracije sajta sa HTTP na HTTPS – podrazumevajući da ste već instalirali SSL kroz Vaš hosting panel.
Migracija sajta sa HTTP na HTTPS
Ono što u ovom koraku treba da uradimo je da:
- U celoj MySQL bazi izmenimo adresu sajta iz http://mojdomen u https://mojdomen
- U fajlovima izmenimo to isto (u većini slučajeva ovo neće biti potrebno)
- Za slučaj da nemamo VestaCP, ili za slučaj da nismo imali force-https opciju u hosting panelu, forsiramo https putem izmene .htaccess fajla
Krenimo redom.
Izmena adrese sajta u MySQL bazi
Skoro svaki CMS drži u bazi adresu sajta, iz raznoraznih razloga. Potrebno je dakle promeniti tu adresu, i reći sajtu “više nisi na http, sad si na https”.
U WordPressu to možete učiniti u wp-admin -> Settings -> General (izmenite http u https u poljima gde stoji adresa Vašeg sajta), ali to često to nije dovoljno, jer su WordPress, tema i pluginovi zapisali adresu sajta (i mnoštvo linkova ka raznim stvarima na Vašem sajtu) na puno mesta u bazi.
Stoga je najpametnije izmeniti sve linkove u bazi jednim potezom.
Za to će nam poslužiti Database Search and Replace Script in PHP skripta.
Popunite formular na sajtu i preuzmite skriptu.
Raspakujte .zip, i folder Search-Replace-DB-master uploadujte u public_html folder na Vašem sajtu, tako da dobijete otprilike ovako poređane foldere na Vašem FTP-u:
Sada pristupite tom folderu iz browsera, prosto odite na http://mojdomen.com/Search-Replace-DB-master/
(ukoliko se slučajno desi da Vaš browser ispiše da ste upali u redirection loop, vratite se u VestaCP i privremeno isključite force-https, odradite ovaj korak do kraja, a zatim vratite ponovo force-https)
Dakle, kada budete otišli na http://mojdomen.com/Search-Replace-DB-master/ videćete otprilike ovo (samo što prva dva polja neće biti popunjena):
U prvom polju, dakle, treba da unesete adresu Vašeg sajta. Obratite pažnju ovde, možda je Vaš sajt na www. poddomenu, u tom slučaju unesite http://www.mojdomen (najlakši način da proverite da li je sajt na www. poddomenu je da uđete na Vaš sajt, kliknete na neku podstranicu i pogledate u address polju da li vidite www.)
U drugom polju unosite identično kao u prvom, samo dodate slovo s iza http, tako da piše https://
Ukoliko koristite WordPress, login podaci za bazu će već biti popunjeni (skripta će ih pročitati iz wp-config.php), u suprotnom morate uneti ime baze, username i password za bazu.
Na kraju kliknite na live run dugme.
Skripta će u nekoliko narednih sekundi u celoj bazi izmeniti http://mojdomen u https://mojdomen.
U retkim slučajevima, kada je baza prevelika, ova skripta neće uspeti da izvrši replace pre nego što se desi PHP time-out – u tom slučaju će Vam skripta javiti da AJAX upit nije uspeo. Ako se to desi, obratite se tehničkoj podršci, i recite im da preko SSH-a izvrše komandu:
php /home/putanja_do_sajta/Search-Replace-DB-master/srdb.cli.php -h localhost -n IMEBAZE -u MYSQLUSER -p MYSQLPASS -s "http://mojdomen" -r "https://mojdomen"
(naravno, izmenite u ovoj komandi putanju do sajta, IMEBAZE, itd…)
Kada skripta završi posao, OBAVEZNO obršite iz FTP-a folder Search-Replace-DB-master (u protivnom će neko drugi pristupiti ovoj skripti i hakovaće Vam sajt)
Time smo u celoj bazi izmenili adresu sajta.
Ukoliko na WordPress-u koristite neke pluginove za caching (poput W3 Total Cache), otvorite Setting tog plugina i kliknite na dugme “Clear/empty all caches”.
Izmena adrese sajta u fajlovima
Ponekad, mada vrlo retko, programeri i dizajneri unose adresu sajta u templejtovima. Neki CMS-ovi drže adresu sajta u config.php fajlovima.
U velikoj većini slučajeva ovo neće biti slučaj kod Vas, ali postoje izuzeci, kao što smo napomenuli.
Da biste proverili da li morate neki fajl da izmenite, učitajte sada Vaš sajt preko https:// protokola (prosto iz browsera otvorite https://mojdomen.com/ ).
Ako Vaš sajt uredno pokazuje zeleni katančić ispred adrese Vašeg sajta – onda vrlo verovatno ne morate nijedan fajl da menjate.
Ukoliko pak umesto zelenog katančića ugledate katančić sa žutim znakom upozorenja, verovatno se neke slike, CSS ili javascript fajlovi učitavaju i dalje sa http umesto sa https.
Ovo ne mora nužno da znači da su ti fajlovi sa Vašeg sajta, ponekad koristimo resurse i sa tuđih sajtova – ali je putanja do njih (URL) svakako upisan NEGDE na Vašem sajtu – ili u bazi ili u fajlovima.
Da biste videli šta se to tačno učitava sa http, pritisnite na tastaturi F12, kliknite na Console, i videćete tačno šta se to učitava sa http.
Ti linkovi (koje treba da prebacite na https) su verovatno u templejtu, ALI, postoji šansa da su i u bazi, pa ćete možda da se vratite na prethodni korak i da u bazi replace-ujete http://nekisajt u https://nekisajt
Ako pak ustanovite da ti linkovi nisu u bazi, onda su sigurno u nekom fajlu.
Nema univerzalnog načina kako da nađete taj fajl.
Sve što treba da uradite je da pronađete fajlove koji sadrži http link, otvorite te fajlove iz tekstualnog editora, i izmenite http:// u https://
Najpre proverite template, često su tu statički uneti linkovi do slika ili CSS/JS fajlova.
U najgorem slučaju, ako ne možete da nađete te fajlove, skinite ceo sajt preko FTP-a, pa uz pomoć Total Commandera odite na Search, pretražite * fajlove, i u “Find text” polju unesite taj nesretni http link.
Ukoliko ste administrator servera ili imate SSH pristup hostingu, možete sledećom komandom da uradite search i replace:
find /home/putanja_do_sajta/ -type f -exec sed -i 's#http://nekidomen#https://nekidomen#g' {} ;
U najgorem slučaju, ako ste već proverili da taj nesretni link nije u bazi, i ne uspevate da locirate fajl koji sadrži taj link – zamolite tehničku podršku da izvrši komandu koju smo napisali u prethodnoj rečenici.
Forsiranje https putem izmene .htaccess fajla
Za slučaj da nemamo VestaCP hosting panel, ili za slučaj da nismo imali force-https opciju u hosting panelu, ili za slučaj da nemamo uopšte hosting panel, https forsiranje možemo obaviti i putem izmene .htaccess fajla.
Preko FTP-a otvorite .htaccess fajl i na samom početku fajla, dakle u prvoj liniji fajla, dodajte sledeće:
RewriteEngine on RewriteCond %{HTTPS} off RewriteCond %{HTTP_USER_AGENT} !(Windows NT 5.1|Windows NT 5.2) [NC] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ovo će sve http upite da preusmerava na https.
Izuzetak su samo Windows XP korisnici, čiji se browseri baš i ne snalaze dobro sa SSL-om, pa njih puštamo da učitaju sajt preko http protokola.
Ako je sajt kojim slučajem iza CloudFlare
Ako je sajt iza CloudFlare, ulogujte se na svoj CloudFlare nalog, izaberite svoj domen, u gornjem meniju kliknite na Crypto, i u SSL odeljku izaberite “Full“.
Ako Vaš domen nije na Vašem CloudFlare nalogu, zamolite onog na čijem je nalogu da uradi ovo.
To bi bilo to
Ukoliko negde zapnete, ili prosto smatrate da je ovo previše komplikovano za Vas – kontaktirajte tehničku podršku i pitajte ih da ovo odrade umesto Vas.
Pošto ovo nije mali niti jednostavan posao, verovatno će Vam hosting provajder naplatiti uslugu migracije sajta – pod uslovom da uopšte pružaju takvu vrstu usluge – pošto to nije obaveza hosting provajdera – već posao programera koji održava sajt.