web-dev-qa-db-fra.com

Comment réparer une chaîne de redirection

J'espère que quelqu'un pourra peut-être aider avec ceci.

L'exploration de mon site montre que j'ai une chaîne de redirection sur ma page d'accueil. Fondamentalement, cela montre que je vais de:

http:> https:> https://www.

J'ai besoin que tout passe de http:// et http://www directement à https://www. sans la chaîne.

Vous trouverez ci-dessous une copie du .htaccess. Tout le monde peut-il savoir s’il contient une erreur qui pourrait en être la cause?.

</IfModule>

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

# 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

En outre, j'ai vu qu'ils ont un plugin appelé

Le fixateur de contenu non sécurisé SSL est installé.

Il montre cela sous son statut:

Array (
[HTTPS] => on
[PHPHANDLER] => /usr/local/php70/bin/php
[HTTP_X_REAL_IP] => 109.158.20.158
[HTTP_X_FORWARDED_PROTO] => https
)

Je pense que cela pourrait avoir quelque chose à voir avec le problème, toutes les pensées sont appréciées.

1
user2868832

La redirection non www vers www est très certainement gérée (plus tard) par WordPress. Votre redirection existante dans .htaccess est HTTP vers HTTPS uniquement, sur le même hôte - ce qui est en fait le moyen préféré (lire: nécessaire) si vous envisagez de mettre en œuvre HSTS dans un avenir proche. Donc, ce n'est pas nécessairement une "erreur".

Toutefois, pour éviter la double redirection, vous pouvez incorporer la redirection non www à www dans votre règle .htaccess existante. Par exemple:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} !^www\.example\.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

Si vous souhaitez en particulier une solution générique (n’importe quel domaine), sans coder en dur le domaine, vous pouvez effectuer les opérations suivantes:

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

%1 est une référence du nom d'hôte (moins le préfixe www.) dans le dernier correspondant CondPattern . Notez cependant que, sans autre modification, cette solution "générique" redirigera également les sous-domaines.

0
MrWhite