ubuntu 14.04
Apache/2.4.7
Je poste ici le fichier de conf pour mon hôte virtuel et mon hôte ssl par défaut. pas capable de comprendre ce que je fais mal.
http://<website_url>
affiche l'index du dossier. Je veux rediriger ceci vers https.
https://<website_url>
s'ouvre correctement.
IMPORTANT: je n'ai pas activé le site SSL par défaut.
cat default-ssl.conf|grep -v "#"
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
</VirtualHost>
</IfModule>
Et voici le fichier de configuration de mywebsite:
cat www.mywebsite.com.conf|grep -v "#"
<VirtualHost *:443>
ServerName www.mywebsite.com:443
ServerAlias www.mywebsite.com
ServerAdmin [email protected]
DocumentRoot /var/www/www.mywebsite.com/html
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
</IfModule>
SSLEngine on
SSLEngine on
SSLCertificateFile /etc/Apache2/ssl/Apache.crt
SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ErrorLog ${Apache_LOG_DIR}/ssl.error.log
CustomLog ${Apache_LOG_DIR}/ssl.access.log combined
</VirtualHost>
Si vous voulez que http://www.mywebsite.com/
soit toujours envoyé sur https
name__, vous devez utiliser redirect
car utiliser mod_rewrite
n'est pas le comportement recommandé.
Selon Requête de redirection vers SSL Page wiki Apache:
Lorsque vous utilisez SSL, vous aurez souvent au moins deux hôtes virtuels: un sur le port 80 pour traiter les demandes ordinaires et un sur le port 443 pour desservir SSL. Si vous souhaitez rediriger des utilisateurs du site non sécurisé vers le site SSL, vous pouvez utiliser une directive de redirection ordinaire à l'intérieur du VirtualHost non sécurisé.
Donc, essayez d’ajouter cette directive dans votre VirtualHost non sécurisé:
Redirect permanent / https://www.mywebsite.com/
Si vous souhaitez malgré tout utiliser la règle rewrite
name__, vous devez ajouter ces lignes dans VirtualHost
non sécurisé:
RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e. http://www.mywebsite.com/foo/ to https://www.mywebsite.com/foo/
comme décrit dans HTTP à HTTPS Apache wiki page.
Votre configuration ne fonctionne pas, car il n’est pas défini un VirtualHost non sécurisé (généralement sur le port 80) qui gère les requêtes http et les redirige pour sécuriser VirtualHost.
Essayez d'ajouter ces lignes:
<VirtualHost *:80>
ServerName dev.dom1.com
Redirect permanent / https://dev.dom1.com/
</VirtualHost>
Dans ce cas, vous n'avez pas besoin d'un DocumentRoot
car ce VirtualHost
redirige tout.
La règle Rewrite
indiquée dans votre fichier de configuration empêche l'accès sécurisé à VirtualHost
via le protocole http
name__; par exemple, http://www.mywebsite.com:443/
sera https://www.mywebsite.com:443/
Vous devez également vérifier que votre site est lié à la bonne page (https) depuis vos pages HTML.
Ceci est un ancien post, mais dans Ubuntu 14.04, la réécriture originale fonctionne, il vous suffit de la changer en:
<Directory /var/www/>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
</Directory>