checkout/onepage
はHTTPSを使用しています。しかし、なぜcheckout/cart
はそうではないのですか?
.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]
############################################
/checkout/
フォルダーに次のコンテンツを含むhtaccessを配置します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
</IfModule>
安全ではない(ポート443に到達しない)すべての要求をhttps
- ed urlに書き換えます。
別の方法
PHPコードスニペットに従って、ファイルの1ページとカートの先頭に配置します。
<?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();
}
?>
同じことをします。
私はこの行が問題かもしれないと思う:
RewriteRule ^checkout/$ https://idfr.com/checkout/ [R=301,L]
----^ ----^
この行は、URLが「次で始まる」場合は[rewites the url
](^
)および [次で終わる]($
)文字列 'checkout'です。 *
や.
のようなワイルドカードがないため、この行は「文字通りcheckout/
、他には何もありません」という意味になります。
つまり、checkout/
は一致しますが、書き換えルールの条件と一致しないため、checkout/example
は一致しません。
# force ssl
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} ^/checkout
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
このスニペットは:
/checkout
で始まります(サーバーによっては、スラッシュは不要な場合があります)