231 votes

Comment rediriger automatiquement HTTP vers HTTPS sur les serveurs Apache ?

Environnement Centos avec apache

Essayer de configurer une redirection automatique de http à https

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

J'ai essayé d'ajouter ce qui suit à mon httpd.conf mais cela n'a pas fonctionné.

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

Des idées ?

272voto

Deano Points 763

J'ai effectivement suivi cet exemple et cela a fonctionné pour moi :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

Alors, faites-le :

/etc/init.d/httpd restart

184voto

IdemeNaHavaj Points 210
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

o

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html

123voto

Jossef Harush Points 1656

Recherché pour apache redirect http to https et a atterri ici. C'est ce que j'ai fait sur Ubuntu :

1) Activer les modules

sudo a2enmod rewrite
sudo a2enmod ssl

2) Modifiez la configuration de votre site

Editer le fichier

/etc/apache2/sites-available/000-default.conf

Le contenu doit être :

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>
  • Notez que le module SSL nécessite un certificat. vous devrez spécifier un certificat existant (si vous en avez acheté un) ou à générer un certificat auto-signé par vous-même.

3) Redémarrer apache2

sudo service apache2 restart

14voto

Vincy Points 169

L'utilisation de mod_rewrite n'est pas la méthode recommandée. Utilisez plutôt un hôte virtuel et une redirection.

Au cas où vous seriez enclin à utiliser mod_rewrite :

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.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

Référence : Httpd Wiki - RewriteHTTPToHTTPS

Si vous cherchez une redirection permanente 301, le drapeau de redirection doit être le suivant,

 R=301

donc la RewriteRule sera comme,

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

12voto

Servant Points 634

En fait, votre sujet appartient à https://serverfault.com/ mais vous pouvez toujours essayer de vérifier ces .htaccess des directives :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X