Итак, у меня есть сайт ZF MVC, и я хочу принудительно установить SSL-соединение для всего, что находится под моим / checkout / Я пробовал использовать для этого mod_rewrite, поэтому мой .htaccess будет выглядеть так:
RewriteEngine on
RewriteRule (/checkout.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]
Конечно, он работает с SSL, но второе правило, специфичное для ZF и перенаправляющее все на index.php sorta, стирает спецификацию протокола.
К сожалению, мой уровень владения mod_rewrite невероятно ужасен. Может быть, кто-нибудь может помочь мне решить это?






Это может вам помочь: добавьте RewriteCond, который будет применяться только тогда, когда соединение не является SSL, а затем добавьте параметр «L» в свое правило перенаправления, чтобы обработка перезаписи остановилась в этой точке (чтобы последнее правило не отменяло перенаправление SSL).
RewriteCond %{HTTPS} !on
RewriteRule (/checkout.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [RL]
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]
Ответ Тима Литла в основном есть.
Я бы изменил его на более строгую проверку HTTPS, а для флагов нужен разделитель.
RewriteCond %{HTTPS} !^on$
RewriteRule ^/checkout/? https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]