2

それで、ZF MVC サイトを取得し、/checkout/ の下のすべてに SSL 接続を強制したいので、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 を開始しますが、2 番目のルールは ZF 固有のものであり、すべてを index.php にリダイレクトするため、プロトコル仕様が消去されます。

残念ながら、私の mod_rewrite の習熟度はとてつもなくひどいものです。多分誰かがこれを解決するために私を助けることができますか?

4

2 に答える 2

3

Tim Lytle の答えはほとんどそこにあります。

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]
于 2009-01-03T05:02:31.267 に答える
1

これは、接続がSSLでない場合にのみ適用するようにRewriteCondを追加してから、リダイレクトルールに「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]
于 2008-12-19T17:31:19.590 に答える