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
.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Devrait faire l'affaire.
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