web-dev-qa-db-fra.com

Redirection automatique de http vers https avec authentification .htaccess dans un hébergement virtuel

Bonjour, j'ai configuré l'hôte virtuel sur Apache avec . Htaccess authentification avec SSL. Cela fonctionne bien quand j'ai tapé l'URL https://www.example.com:9004/test.php mais quand j'ai tapé http://www.example.com:9004/test.php j'obtiens cette erreur:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://www.example.com/  

Mon fichier httpd.conf ressemble à ceci:

 Listen 9004
<VirtualHost *:9004>
    ServerAdmin root@localhost
    DocumentRoot /mnt/work/httpd
    <Directory "/mnt/work/httpd">
    Options FollowSymLinks
     AllowOverride AuthConfig
    </Directory>
  SSLEngine On
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  SSLCertificateKeyFile /mnt/work/httpd/www.example.com.key
  SSLCertificateFile /mnt/work/httpd/www.example.com.crt
#RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com:9006%{REQUEST_URI}
    ServerName www.example.com
    ErrorLog "/mnt/work/log/error_log"
    CustomLog "/mnt/work/log/access_log" combined
</VirtualHost>

Et mon fichier / etc/httpd/conf.d/ssl.conf est:

LoadModule ssl_module modules/mod_ssl.so

#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
Listen 9006

Et Mmy . Htaccess le fichier est:

AuthType Digest
AuthName "Protected"
AuthDigestProvider file
AuthGroupFile /dev/null
AuthUserFile /mnt/work/httpd/digest_auth
Require user johan

Que dois-je faire pour que lorsque je clique sur http:/www.example.com:9004/test.php, il soit automatiquement redirigé vers https://www.example.com:9004/test.php.

3
Akki
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

Devrait faire l'affaire.

3

Il semble que vous voulez 9004 pour https; 9006 pour http; Vous devez rediriger la connexion http sur le port 9004 vers la connexion https sur le même port 9004.

Cependant, votre configuration redirige http://example.com:9004 vers https://example.com:9006 ce qui n'a pas beaucoup de sens puisque le port 9006 est pour http. Il suffit de remplacer 9006 par 9004 dans votre RewriteRule.

Quelques informations supplémentaires sur la redirection d’URL: http://wiki.Apache.org/httpd/RedirectSSL

0
Thava