332 votes

htaccess rediriger vers https://www

J'ai le texte suivant htaccess code:

<IfModule mod_rewrite.c>

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

</IfModule>

Je veux que mon site pour être redirigé vers https://www. mais lorsque j'accède http://www. ne redirige pas m' https://www.

667voto

Michael Berkowski Points 137903

À première force HTTPS, vous devez vérifier la bonne variable d'environnement %{HTTPS} off, mais la règle ci-dessus, puis ajoute l' www. Puisque vous avez un deuxième règle à respecter www., ne pas l'utiliser dans la première règle.

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

155voto

Larzan Points 503

Michals réponse a fonctionné pour moi, mais avec une petite modification:

Problème:

lorsque vous avez un site unique de certificat de sécurité, un navigateur qui tente d'accéder à votre page sans https:// www. (ou n'importe quel domaine de votre certificat couvre) affichera un vilain rouge écran d'avertissement avant il obtient même de recevoir la réorienter vers la sécurité et de corriger page https.

Solution

La première utilisation de la redirection vers le www (ou n'importe quel domaine est couvert par votre certificat) et ensuite faire la redirection https. Cela permettra d'assurer que vos utilisateurs ne sont pas confronté à une erreur parce que votre navigateur voit un certificat qui ne couvre pas l'url actuelle.

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

28voto

Vynz Points 181

Il y a beaucoup de solutions là-bas. Voici un lien vers l'apache wiki qui traite directement de cette question.

http://wiki.apache.org/httpd/RewriteHTTPToHTTPS

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

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