151 votes

.htaccess rediriger http vers https

J'ai une ancienne url ( www1.test.net ) et je voudrais la rediriger vers https://www1.test.net
J'ai mis en œuvre et installé notre certificat SSL sur mon site.
Voici mon ancien fichier .htaccess :

RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

Comment puis-je configurer mon .htaccess pour que l'url redirige automatiquement vers https ?
Merci !

312voto

Bradley Flood Points 652

J'utilise ce qui suit pour rediriger avec succès toutes les pages de mon domaine de http à https :

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

Notez que cela va rediriger l'utilisation de l 301 'permanently moved' redirection, ce qui contribuera à transférer vos classements SEO.

Pour rediriger en utilisant le 302 'temporarily moved' changement [R=302,L]

138voto

Jojo Points 1974

Mise à jour 2016

Comme cette réponse reçoit une certaine attention, je veux faire allusion à une façon plus recommandée de procéder en utilisant les hôtes virtuels : Apache : Redirection SSL

<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>

Vieille réponse, truc bidule si votre port ssl n'est pas défini sur 80, cela fonctionnera :

RewriteEngine on

# force ssl
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Notez que ceci devrait être votre première règle de réécriture.

Editar: Ce code fait ce qui suit. Le RewriteCond(ition) vérifie si le ServerPort de la requête est 80 (qui est le port http par défaut, si vous spécifiez un autre port, vous devrez adapter la condition à celui-ci). Si c'est le cas, nous faisons correspondre l'url entière (.*) et le redirige vers une url https. %{SERVER_NAME} peut être remplacé par une url spécifique, mais de cette façon, vous ne devez pas modifier le code pour d'autres projets. %{REQUEST_URI} est la partie de l'URL après le TLD (top-level-domain). Vous serez donc redirigé vers l'endroit d'où vous venez, mais en https.

110voto

llioor Points 64

C'est le meilleur pour www et pour HTTPS, pour les utilisateurs avec ou sans proxy.

RewriteEngine On

### WWW & HTTPS

# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

### WWW & HTTPS

18voto

Arda Points 1635

Je force le https avec le code suivant :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

10voto

Muthu Kumaran Points 6665

Ajoutez ce code à la fin de votre fichier .htaccess

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

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