web-dev-qa-db-fra.com

htaccess 301 redirige http en https ne fonctionne pas

J'ai mis à jour de http à https aujourd'hui. Jusqu'ici tout va bien. Tout fonctionne, sauf la commande de redirection. Lorsque je clique sur un média social externe ou un site Web dont le lien vers mon blog utilise toujours l'ancienne version http, celui-ci n'est pas redirigé.

Voici à quoi ressemble une partie de mon dossier:

# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName zoomingjapan.com
AuthUserFile /home/zoomingj/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/zoomingj/public_html/_vti_pvt/service.grp
# 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]
RewriteCond %{HTTP_Host} ^zoomingjapan.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.zoomingjapan.com [NC]
RewriteRule ^(.*)$ https://zoomingjapan.com/$1 [L,R=301,NC]
</IfModule>

# END WordPress

J'ai aussi essayé cela à la place, pas de résultat positif:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]
</IfModule>

Ceci est un lien http . Vous pouvez tester et voir par vous-même qu'il ne sera pas redirigé.

Un plugin de mise en cache pourrait-il interférer? J'utilise LiteSpeed ​​Cache.

1
japanworm

Vous avez mis le code de redirection au mauvais endroit. Il faut aller before la section # BEGIN WordPress. En plaçant le code de redirection after le contrôleur frontal WordPress, il ne sera jamais traité, sauf si la demande concerne un fichier physique.

Cependant, votre première tentative n'est pas correcte (la vérification de HTTPS est manquante), ce qui entraînerait une boucle de redirection (si elle a été exécutée).

Un HTTP standard à HTTPS prendrait la forme suivante:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

Cependant, idéalement, vous devriez également combiner cela avec une redirection canonique www/non-www, afin d'éviter le contenu en double ou les redirections multiples. Par exemple, si la préférence est pour www (et que vous n'avez pas d'autre sous-domaine), quelque chose comme ce qui suit:

# Redirect bare domain to www and HTTPS
RewriteCond %{HTTP_Host} !^www\.
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]

UPDATE: Si vous préférez la version non-www, vous pouvez changer la première règle pour lire quelque chose comme:

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

(En supposant que vous ayez également modifié les paramètres nécessaires dans WordPress.)

4
MrWhite

Essaye ça:

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
# END WordPress
0
Jasom Dotnet