Utilisation de mod_rewrite pour revenir 404 pour toutes les demandes sur http
Je suis à la configuration d'apache pour créer un site qui va utiliser mod_jk pour se connecter à une application en cours d'exécution sur tomcat.
Je veux seulement les requêtes https pour accéder à mon application, et je voudrais utiliser mod_rewrite pour renvoyer une 404 pour toute requête http sur le port 80.
Voici ma tentative de configuration de 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>
Maintenant tout est bien et bon moment de frapper, https://admin.app.com/myapp - je suis en mesure d'accéder à mon application tomcat confirmant que mod_jk et mes certificats SSL sont travail comme je m'y attendais, cependant, toute demande d'url-je faire avec http://retourne 400 bad request, pas la 404 que j'attendais.
J'ai ajouté RewriteLog et RewriteLogLevel 3 et a obtenu le résultat suivant
(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]
Qui, je l'interpréter comme signifiant que d'une erreur 404 doit être retourné
Ma question est pourquoi je reçois un 400 Bad Request lorsque le journal semble être la réécriture de mes demandes correctement à une erreur 404, et, d'ailleurs, qu'est-ce que les meilleures pratiques concernant permettant à un site d'être accessible uniquement via https.
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas utiliser un code 404 parce que le problème n'est pas que la page ne peut pas être trouvé, c'est que l'utilisateur de faire un interdit de la demande.
Au lieu de cela, essayez ceci:
Ensuite, vous pouvez utiliser un custom erreur 403 page pour expliquer que seules les demandes sécurisées sont autorisés à suivre cette voie.