Apacheでmod_rewriteが適用されないので調べると設定が以下のようになっていた。
Listen 80 Listen 443 Include conf/extra/proxy-ajp.conf # ProxyPassが設定されている Include conf/extra/rewrite.conf # RewriteRuleが設定されている <VirtualHost _default_:443> SSLEngine On ... </VirtualHost>
SSLでアクセスすると ProxyPass の設定は適用されるが RewriteRule が適用されない。
mod_rewriteはバーチャルホスト毎に設定する必要があるようで、以下のようにするとSSLでrewriteが動作した。
Listen 80 Listen 443 Include conf/extra/proxy-ajp.conf Include conf/extra/rewrite.conf <VirtualHost _default_:443> SSLEngine On ... Include conf/extra/rewrite.conf </VirtualHost>
バーチャルホスト毎に設定する必要性は理解できる。同様にLocationやProxyPassの設定もバーチャルホスト毎に設定が独立しているべきだと思うのだが、そうなっていないのは何か理由があるのだろうか。