Voor het aanbieden van SSL (https) in een WebsiteBaker website bestond er tot nu toe maar één oplossing, namelijk: de complete website via SSL laten werken.
Het probleem is namelijk dat de menu's die via show_menu2 worden gemaakt de standaard WB_URL waarde van WebsiteBaker gebruiken. Die kan maar 1 waarde hebben: http:// of https://.
Daarnaast zal een pagina waarschuwingen geven als er in een beveiligde pagina onbeveligde elementen worden geladen.
Afbeeldingen, stylesheets, javascripts e.d. die van dezelfde server komen moeten dus ook via het https protocol worden geladen.
Met behulp van Droplets is dit allemaal op te lossen, en is het zo te maken dat bepaalde pagina's SSL gebruiken, en andere niet.
De Dropletcode:
//call the droplet like: if(!isset($path)) return true; $linkfind = WB_URL.$path; $linkreplace = str_replace("http://","https://",$linkfind); $wb_page_data = str_replace($linkfind, $linkreplace, $wb_page_data); if ($_SERVER['SERVER_PORT']!==80) { $linkfind = WB_URL.MEDIA_DIRECTORY; $linkreplace = str_replace("http://","https://",$linkfind); $wb_page_data = str_replace($linkfind, $linkreplace, $wb_page_data); $linkfind = WB_URL.'/modules'; $linkreplace = str_replace("http://","https://",$linkfind); $wb_page_data = str_replace($linkfind, $linkreplace, $wb_page_data); $linkfind = TEMPLATE_DIR; $linkreplace = str_replace("http://","https://",$linkfind); $wb_page_data = str_replace($linkfind, $linkreplace, $wb_page_data); } return true;
Deze droplet zal eerst alle links naar url's met opgegeven map (?path=directoryname) herschrijven naar de https:// variant van de orginele link.
Daarnaast worden alle url's van afbeeldingen (media map), templates onderdelen en modules (denk aan frontend.css/frontend.js bestanden) ook herschreven naar de https variant.
De droplet plaats je vervolgens in de template zodat die bij iedere pagina opvraging wordt uitgevoerd.
Een voorbeeld van de droplet aanroep is dan . Vanaf dat moment zou alles in de webshop met https moeten werken.
Vaak begint een webwinkel met een pagina van het type menu-link om de bezoeker direct naar een subcategorie van een webshop te sturen.
Bij normaal gebruik zal de bezoeker doorgestuurd worden naar een pagina die vanuit een lijstje wordt gekozen.
Menu link heeft darbij geen weet van de SSL verbindingen en zal de eerste pagina dus via http (dus niet https) laten zien.
Om dit op te vangen is het mogelijk via een .htaccess bestand te zorgen dat pagina's in een bepaalde map altijd met https worden geladen.
De htaccess regels:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} pages/webshop
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Uiteraard moet je ook een SSL certificaat voor de server/website aanvragen.
Je hosting bedrijf kan/moet je daarbij helpen.
Een live website met deze oplossing is te bekijken op www.deguts.nl