Я использовал следующее, чтобы запросить 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, но это не должно иметь значения. Это в моем файле 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 должно быть помещено в файл vhost_ssl. Если вы используете httpd.conf или .htaccess, я думаю, вы можете поместить их обоих в одно и то же место.
Я также разместил это руководство в своем блоге: Правила переписывания Apache для принудительного использования защищенных / незащищенных страниц .