web-dev-qa-db-fra.com

Erreur .htaccess - ERR_TOO_MANY_REDIRECTS

J'ai ce fichier .htaccess pour rediriger http:// vers https://
J'ai aussi fait www. pour rediriger le domaine racine!
www. au domaine racine fonctionne! Cependant, la redirection https:// ne fonctionne pas! Si je règle RewriteCond %{HTTPS} on sur RewriteCond %{HTTPS} off ou RewriteCond %{HTTPS} =!on, une erreur de navigateur s’affiche: 

La page example.com ne fonctionne pas

mysite.com vous a redirigé trop de fois.

Essayez d'effacer vos cookies.

ERR_TOO_MANY_REDIRECTS


Une édition que j’ai faite m’a donné une erreur de 500 mais je suis revenue à ce qu’elle était avant! je n’ai fait que changer: RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} en RewriteRule(.*) https://%{HTTP_Host}%{REQUEST_URI} ou RewriteRule (.*)https://%{HTTP_Host}%{REQUEST_URI}

Quelqu'un a une idée sur la façon de résoudre ce problème?

Ceci est tout mon fichier .htaccess!

<IfModule mod_rewrite.c>
 RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
RewriteCond %{HTTPS} on          [OR]
RewriteCond %{HTTP_Host} ^www\.   [NC]
RewriteRule ^ https://antimalwareprogram.co%{REQUEST_URI}     [R=301,L,NE]
</IfModule>
2
user8529958
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

Oui, cela créera une boucle de redirection. La logique est fausse. Qu'est-ce que cela dit, c'est ... si HTTPS est "activé", redirigez-le vers HTTPS. Vous devriez vérifier si HTTPS est "désactivé" (ou "non activé", c.-à-d. !on).

(En supprimant les espaces entre les arguments, vous avez probablement créé une boucle de réécriture, d'où l'erreur 500. Les espaces sont des délimiteurs dans les fichiers de configuration Apache.)

Essayez plutôt quelque chose comme ce qui suit:

RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L,NE]

Cela gère à la fois les redirections canoniques HTTPS et www. Vous n'avez pas besoin de la première règle. Vous n'avez pas non plus besoin du conteneur <IfModule>.

Modifiez le 302 en 301 uniquement lorsque vous êtes sûr que tout fonctionne correctement.

Assurez-vous d'avoir vidé le cache de votre navigateur avant de procéder aux tests. 301s sont mis en cache par le navigateur.


UPDATE: Si cela vous donne toujours la même erreur (une boucle de redirection), il est possible que votre SSL soit géré par un proxy frontal, pas par votre serveur d'applications. Si tel est le cas, vous ne pourrez pas utiliser la variable de serveur HTTPS. Voir ces questions connexes:


Il semble que dans ce cas, ENV:HTTPS (une variable d'environnement) devait être utilisé à la place de HTTPS (variable de serveur Apache). Notez cependant qu'il s'agit d'une configuration non standard/spécifique au serveur, car cela implique qu'un proxy frontal est utilisé pour gérer le protocole SSL.

5
MrWhite