Le checkout/onepage
fonctionne avec HTTPS. Mais pourquoi checkout/cart
ne l’est pas?
Voici un fragment du .htaccess:
############################################
## enable rewrites
Options +FollowSymLinks
RewriteEngine on
# RewriteCond %{REQUEST_URI} checkout\/onepage
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} checkout/
# RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
RewriteRule ^checkout/$ https://idfr.com/checkout/ [R=301,L]
############################################
Placez dans votre dossier /checkout/
un htaccess avec ce contenu:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
</IfModule>
Toutes les demandes qui ne sont pas sécurisées (ne venant pas sur le port 443) seront réécrites en https
- ed url.
autre moyen
Placez au début de vos fichiers onepage et cart suivants PHP extrait de code:
<?php
if ($_SERVER["SERVER_PORT"] != 443) {
$redir = "Location: https://" . $_SERVER['HTTP_Host'] . $_SERVER['PHP_SELF'];
header($redir);
header("HTTP/1.1 301 Moved Permanently");
exit();
}
?>
qui fait la même chose.
Je pense que cette ligne pourrait être le problème:
RewriteRule ^checkout/$ https://idfr.com/checkout/ [R=301,L]
----^ ----^
Cette ligne rewites the url
si l'URL 'commence par' (^
) et 'se termine par' ($
) par la chaîne 'checkout'. Comme vous n'avez aucun caractère générique tel que *
ou .
, cette ligne signifie désormais "littéralement checkout/
, rien d'autre".
Cela signifie que checkout/
correspondra, mais checkout/example
ne le sera pas , car il ne correspond pas aux conditions de la règle de réécriture.
# force ssl
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} ^/checkout
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
Cet extrait fait:
/checkout
( La barre oblique peut ne pas être nécessaire en fonction de votre serveur)