以下を使用して、Web サイトのチェックアウト セクションで SSL を要求しました。
<Directory "/var/www/html">
RewriteEngine on
Options +FollowSymLinks
Order allow,deny
Allow from all
RewriteCond %{SERVER_PORT} !^443$
RewriteRule \.(gif|jpg|jpeg|jpe|png|css|js)$ - [S=1]
RewriteRule ^checkout(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>
たとえば、 http://www.example.com/checkout をクリックすると、 https ://www.example.com/checkoutにリダイレクトされます
このルールは、混合コンテンツの警告が表示されないように、通常はページ内に含まれるファイル拡張子をスキップします。必要に応じて、このリストに追加してください。
複数のページが必要な場合は、RewriteRule を次のように変更します。
RewriteRule ^(checkout|login)(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
もちろん、ディレクトリはサーバー上の実際のパスと一致する必要があります。このページは、特定のニーズに関する詳細情報にも役立つ場合があります: http://www.whoopis.com/howtos/apache-rewrite.html
Plesk 8.6 を実行する Web サイトでこれを使用していますが、それは問題ではありません。これは私の vhost.conf ファイルにあります。これは、httpd.conf ファイルに入れるようなものです。.htaccess ファイルで使用するために何かを調整する必要があるかどうかはわかりませんが、それは疑わしいです。conf ファイルに追加する場合は、apache を再起動して構成をリロードすることを忘れないでください。
あなたが私のようで、特定のページでのみ SSL を使用したい場合は、残りのページを通常の http に戻す書き換えルールも必要です。逆効果には以下を使用できます。
RewriteCond %{SERVER_PORT} ^443$
RewriteRule \.(gif|jpg|jpeg|jpe|png|css|js)$ - [S=1]
RewriteRule !^(checkout|login)(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]
私のように Plesk を使用している場合、非 SSL トラフィックはすべて vhost.conf ファイルを使用しますが、SSL トラフィックはすべて vhost_ssl.conf ファイルを使用することに注意してください。つまり、SSL を要求する最初の書き換えルールは vhost.conf ファイルに記述しますが、強制的に非 SSL に戻す 2 番目のルールは vhost_ssl ファイルに記述する必要があります。httpd.conf または .htaccess を使用している場合は、両方を同じ場所に配置できると思います。
このチュートリアルもブログに投稿しました: Apache rewrite rules to force secure/non-secure pages .