No nie powiem. Instalacja tej funkcjonalności na tej wersji nastręczyła nam problemów… W każdym razie działa i chętnie się z Tobą podzielimy naszymi wskazówkami 🙂
Domyślnie SSL działa w PrestaShop w momencie logowania klienta, logowania administratora i w koszyku (na piątym kroku zakupu). Zatem się nie obawiaj, że Twój sklep nie będzie miał na stronie startowej – https:// chociaż tak też powinien on działać.
Oczywiście poniższego wpisu na naszym blogu nie można tego traktować jak tutoriala że na bank zadziała – ale może Tobie podsunąć rozwiązanie problemu z Twoją PrestąShop:)
Z informacji znalezionych w Internecie wynika że duże znaczenie ma także specyfika serwera oferowana przez Twojego providera. Więc życzymy powodzenia.
Zatem po kolei.
KWESTIA 1: Zakup certyfikatu.
My skorzystaliśmy z RapidSSL. Sam certyfikat nam nie wystarczył. Z racji, że serwer to wirtualka – trzeba było jeszcze przydzielić unikalny adres IP.
KWESTIA 2: Zmiany w kodzie PHP
Niestety ta wersja PrestaShop jest obarczona drobnym błędem. Przynajmniej jeśli chodzi o naszego providera serwerowego. Otóż musimy zmienić wszystkie wystąpienia:
$_SERVER['HTTPS']
na:
$_SERVER['SSL']
Przede wszystkim chodzi o pliki:
classes/Tools.php NAZWA_TWOJEGO_FOLDERU_ADMIN/login.php
W katalogu /modules także znajduje się parę tych wystąpień (w kontorlerach modułów) – my dla asekuracji je zmieniliśmy. Nie wiem czy ma to wpływ na dzialanie SSL na globalnym sklepie.
KWESTIA 3: Włączenie SSL w panelu PrestaShop
Zmianę tę poprzedzamy przyciskiem ZAPISZ na dole strony. W niektórych wersjach PrestaShop może być tam link zamiast radio-butonów. Należy go klinąć i poprzedzić to wspomnianym ZAPISZ.
KWESTIA 4: Przebudowa .htaccess
Wchodzimy na stronę w panelu PrestaShop: Ustawienia -> SEO i w dolnej części wykonujemy czynności pokazane na obrazku:
Na nastepnej stronie dobrze abyśmy zaznaczyli tę opcję: Wyłącz apache MultiViews
Może ona powodować pojawienie się w Przeglądarce Google Chrome przyjemnego komunikatu: „Ta strona internetowa zawiera pętlę przekierowań”. Najlepiej się upewnić że to zostało zrobione tj usunięte. Radzimy otworzyć ręcznie plik .htaccess na serwerze (zdajdujący się w katalogu główym) i sprawdzić czy jest ten wpis:
# Disable Multiviews Options -Multiviews
Jak jest – usuń go.
KWESTIA 5: Upewnij się że usługa SSL jest włączona przez sklep
Najlepiej iść do źrodła;) Zatem zaloguj się do phpMyAdmina i sprawdź czy w tabeli:
ps_configuration
Opcja konfiguracyjna o nazwie:
PS_SSL_ENABLED
ma wartość: 1
KWESTIA 6: Możesz mieć problem z logowaniem się do sklepu…
prawdopodobnie zobaczysz miły komunikat:
I sytuacja jest dosyć kuriozalna bo mimo ze masz komunikat o potrzebie wejscia po https to jak to robisz – widzisz dalej to przekierowanie..
Najlepiej zakomentować lub usunąć odpowiednie partie kodu – aby nie „zjadać własnego ogona”.
Edytujemy wspomniany wyżej plik:
NAZWA_TWOJEGO_FOLDERU_ADMIN/login.php
i na około linii 39 mamy instrukcję warunkową. Uwuwamy ją, bądź całą komentujemy:
if ((empty($_SERVER['SSL']) OR strtolower($_SERVER['SSL']) == 'off') AND _PS_SSL_ENABLED_) { (...) }
Następnie w okolicach linii 159 mamy kolejną instrukcję warunkową:
if ((empty($_SERVER['SSL']) || strtolower($_SERVER['SSL']) == 'off') && (_PS_SSL_ENABLED_ && !$clientIsMaintenanceOrLocal)) echo '<div class="error">'.$warningSslMessage.'</div>'; else echo '<label for="email">'.translate('E-mail address:').'</label><br /> ......
komentujemy ją na postać:
/* if ((empty($_SERVER['SSL']) || strtolower($_SERVER['SSL']) == 'off') && (_PS_SSL_ENABLED_ && !$clientIsMaintenanceOrLocal)) echo '<div class="error">'.$warningSslMessage.'</div>'; else */ echo '<label for="email">'.translate('E-mail address:').'</label><br /> ......
KWESTIA 7: Rozbudowanie metody usingSecureMode(). To rozwiązanie pochodzi stąd.
Nie wiem czy jest to warunek konieczny ale znaleźliśmy to w Sieci i możesz dodać asekuracyjnie:)
W pliku:
classes/Tools.php
Znajdz statyczną metodę:
public static function usingSecureMode()
I na jej początku dodaj:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) { $_SERVER['SSL']='on'; } else { $_SERVER['SSL']='off'; }
Chyba to wszystko:) Udało się nam to zrobić tymi sposobami. Zatem.. powodzenia.
Demo jest zaprezentowane na sklepie wykonanym przez firmę SmartProjects.pl – NamiotyMagazynowe:
[…] Gotowe. To jak dziala taka modyfikacja w praktyce można podejrzeć na jednej z zrealizacji sklepu internetowego wykonanego przez firmę SmartProjects.pl pod linkiem poniżej. Ten sklep dodatkowo wyposażony w certyfikat SSL, którego instalacje opisywaliśmy w innym poście. […]
hej a jak prestę 1.4 zrobić całą na https??
Możliwe ze to kwestia odpowiednio przygotowanego pliku .htaccess. Czy udało Ci się już rozwiązać ten problem?
można wymusić w htaccess przystko na https ale to nic nie da, gdyż linki do zdjęc produktów, kategorii itp będą http:
[…] instalujemy SSL na naszym sklepie (np. wg naszego poradnika dla wersji 1.4.11 – zobacz) i natrafiliśmy na jeden z następujących […]