mod_jk を使用して tomcat で実行されているアプリに接続するサイトを作成するように apache を構成しています。
https リクエストのみがアプリにアクセスするようにし、ポート 80 のすべての http リクエストに対して mod_rewrite を使用して 404 を返したいと考えています。
これがVirtualHost構成での私の試みです
<VirtualHost *:80>
ServerName admin.app.com
RewriteEngine On
RewriteRule ^ [L,R=404]
</VirtualHost>
<VirtualHost *:443>
ServerName admin.app.com
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/bla.crt
SSLCertificateKeyFile /etc/apache2/ssl/bla.key
SSLCACertificateFile /etc/apache2/ssl/bla.ca
SSLProtocol all
SSLCipherSuite HIGHT:MEDIUM
JkMount /myapp*
</VirtualHost>
https://admin.app.com/myappを押すと、すべてがうまくいきます。Tomcat アプリにアクセスして、mod_jk と SSL 証明書が期待どおりに機能していることを確認できますが、http で行う URL 要求はすべて次のようになります。 // 期待していた 404 ではなく、400 の不正なリクエストを返します。
RewriteLog と RewriteLogLevel 3 を追加すると、次の出力が得られました
(2) init rewrite engine with requested uri /
(3) applying pattern '^' to uri '/'
(2) rewrite '/' -> '[L,R=404]'
(2) local path result: [L,R=404]
(2) init rewrite engine with requested uri /myapp/favicon.ico/
(3) applying pattern '^' to uri '/myapp/favicon.ico/'
(2) rewrite '/myapp/favicon.ico/' -> '[L,R=404]'
(2) local path result: [L,R=404]
これは、404 を返す必要があることを意味すると解釈します
私の質問は、ログがリクエストを 404 に正しく書き換えているように見えるのに、なぜ 400 Bad Request を受け取るのかということです。さらに、https 経由でのみサイトにアクセスできるようにすることに関するベスト プラクティスは何ですか。