Итак, у меня есть сайт 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 ужасно ужасен. Может быть, кто-то может помочь мне решить это?
Ответ Тима Лилта в основном есть.
Я бы изменил его немного более строгим при проверке 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]
Это может помочь вам добавить 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]