2017-09-22 3 views
0

Donc, un projet de mon site a un problème avec HTTPS. Quand je l'ouvre sur le bureau Chrome/Opera/Firefox ça marche bien, mais sur l'iPhone Safari/Chrome il me renvoie l'erreur "trop ​​de redirections". Cela se produit uniquement sur les iPhones. Voici le contenu du fichier .htaccess qui devrait rediriger http vers https et www non-www (il est dans le haut du fichier, il n'y a pas de données Redirect fichier entier):Trop de redirections sur iPhone Safari/Chrome

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

Pourquoi ai-je noté un protocole HTTPS ? Parce que quand je supprime le RewriteRule du fichier il charge sans problème.

D'abord j'ai essayé seulement sur Safari. J'ai enlevé l'histoire d'Internet et les biscuits - aucune aide. J'ai téléchargé Chrome frais et le même problème se produit. Donc, mon problème se produit uniquement avec HTTPS sur ... Pourquoi?

Répondre

0

Il suffit de fusionner la redirection en une seule en utilisant le drapeau [OR]:

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

vos règles Cette combine et devrait arrêter le serveur de jeter trop de redirections erreur. La première condition vérifie si HTTPs n'est pas activé et la deuxième condition vérifie si www est présent ou non.

Si l'une de ces conditions échoue, l'URL sera réécrite à l'aide de la redirection 301 pour utiliser les protocoles HTTP et supprimer www.

Assurez-vous de vider votre cache avant de le tester sur le.

+0

J'ai essayé, mais toujours même résultat :(Vous pouvez consulter le site: wcbidet.eu (il est votre suggestion appliquée maintenant, j'ai changé le example.com) – debute

0

Je l'ai fixé en utilisant la méthode suivante

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

Ma condition actuelle est 'RewriteCond% {SERVER_PORT} 80' ce qui est à peu près la même chose :) – debute

+0

Je veux dire que le% {SERVER_PORT} fonctionnera au lieu de% {HTTPS} :) –