Как заставить SSL + mod_rewrite + Zend Framework MVC работать вместе?

Итак, я получил сайт 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, как бы стирает спецификацию протокола.

К сожалению, мой уровень владения mod_rewrite невероятно ужасен. Может быть, кто-нибудь может помочь мне решить эту проблему?


person xelurg    schedule 19.12.2008    source источник


Ответы (2)


Ответ Тима Литла в основном там.

Я бы изменил его, чтобы он был немного более строгим в проверке 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]
person Chris    schedule 03.01.2009

Это может помочь вам, добавьте 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]
person Tim Lytle    schedule 19.12.2008