web-dev-qa-db-fra.com

http à https via .htaccess

J'ai jeté un coup d'œil aux questions existantes, mais je n'ai rien trouvé qui puisse fonctionner pour moi.

J'utilise actuellement un site avec un certificat SSL sécurisé. Vous pouvez y accéder à l’adresse https://www.example.co.uk . Un problème est que le site peut également être consulté à l’adresse http://www.example.co.uk - Je ne sais pas. veux que cela soit possible. J'en ai besoin pour rediriger de http à https.

J'ai trouvé cet extrait de code à utiliser dans un fichier .htaccess.

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_Host} ^example.co.uk [NC] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]

Cela fonctionne bien lorsque l'utilisateur entre example.co.uk dans la barre d'adresse, mais je dois également ajouter une déclaration conditionnelle de sorte que, si l'utilisateur entre "www.example.co.uk" ou " http: //www.example.co.uk '. 

J'ai essayé d'utiliser le genre de [OU], mais cela finit par créer des erreurs de serveur.

Toute aide et suggestions sont appréciées.

À votre santé.

57
fitzilla

Essayez ce qui suit:

 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Vous pouvez également rediriger en fonction du numéro de port, par exemple:

 RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Cela redirigera toutes les demandes reçues sur le port 80 vers HTTPS.

146
BluesRockAddict

Ajoutez le code suivant dans le fichier .htaccess.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

change exemple.com avec le domaine de votre site Web

Vous pouvez trouver le didacticiel de redirection d’URL à partir d’ici - Rediriger les fichiers non-www vers www & HTTP vers HTTPS en utilisant le fichier .htaccess

12
JoyGuru

Essayez ceci, je l'ai utilisé et ça marche bien

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
5
Ali Aboussebaba

Essaye ça:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]

Source: http://www.ndchost.com/wiki/Apache/redirect-http-to-https

(J'ai essayé tellement de blocs de code différents, ce 3-liner a parfaitement fonctionné)

3
afriend

J'essaie tout le code ci-dessus mais aucun code ne fonctionne pour mon site Web. J'essaie ensuite ce code et ce code fonctionne parfaitement pour mon site Web. Vous pouvez utiliser la règle suivante dans htaccess:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

//Redirect http to https
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_Host} ^(www\.)?example\.com
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

//Redirect non-www to www
RewriteCond %{HTTP_Host} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

</IfModule>

Changez exemple.com avec votre nom de domaine et désolé pour mon anglais médiocre.

3
Dinesh Gurjar

Pour moi ne travaille que cette variante:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

Merci http://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-dobavit-redirekt/redirekt-s-http-na-https (en russe)

2
Sllouyssgort

Si vous voulez rediriger HTTP vers HTTPS et ajouter www avec chaque URL, utilisez l’accès htaccess ci-dessous.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}/$1 [R=301,L] 

il va d'abord rediriger HTTP vers HTTPS, puis il sera redirigé vers www.

1
Mady Joshi
# Switch rewrite engine off in case this was installed under HostPay.
RewriteEngine Off

SetEnv DEFAULT_PHP_VERSION 7

DirectoryIndex index.cgi index.php

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# RewriteCond %{HTTP_Host} ^compasscommunity.co.uk\.com$ [NC]
# RewriteRule ^(.*)$ https://www.compasscommunity.co.uk/$1 [L,R=301]
1
Compass

Perfect Code Aller à l'index HTML:

RewriteEngine on
RewriteCond %{HTTP_Host} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.html" [R=301,L]

Ou

Code parfait Aller à l'index PHP:

RewriteEngine on
RewriteCond %{HTTP_Host} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.php" [R=301,L]
1
Allysha

Pour rediriger http://example.com ou http://www.example.com vers https://www.example.com de manière simple, vous pouvez utiliser la règle suivante dans htaccess:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond www.%{HTTP_Host} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]

[Testé]

% {REQUEST_SCHEME} variable est disponible depuis Apache 2.4, cette variable contient la valeur du schéma demandé (http ou https). Sur Apache 2.4, vous pouvez utiliser la règle suivante:

RewriteEngine on


RewriteCond %{REQUEST_SCHEME} ^http$
RewriteCond %{HTTP_Host} ^(www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [NE,L,R]
1
starkeen

Il existe des moyens plus sûrs et plus sûrs d’assurer que tout votre trafic dépasse https. Par exemple, configurez deux hôtes virtuels et redirigez tout le trafic de votre http vers votre hôte https. Plus d'informations à ce sujet dans cette réponse ici sur security.stackexchange.com .

Avec la configuration d'un hôte virtuel pour la redirection, vous pouvez envoyer un statut 301 (redirection permanente) afin que le navigateur sache que toutes les demandes suivantes doivent être envoyées au serveur https vers lequel il a été redirigé. Par conséquent, aucune autre requête http ne sera faite après la première réponse de redirection.

Vous devez également vérifier soigneusement les réponses données, car avec un jeu de règles de réécriture incorrect, vous risquez de perdre les paramètres de requête de vos demandes entrantes.

1
Wilt

S'agissant d'un des résultats les plus fréquents de la recherche, si vous essayez d'ajouter http à la redirection https sur AWS Beanstalk, la solution acceptée ne fonctionnera pas.

RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
1
Ignas2526

Essayez ceci RewriteCond %{HTTP_Host} !^www. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]

1
krypto99

Aucun de ceux-ci n'a fonctionné pour moi, à part cela. Mon site était hébergé dans https://www.asmallorange.com

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
0
Bee