web-dev-qa-db-fra.com

WordPress HTTP à HTTPS sans slash final entraîne une double redirection

J'ai remarqué que l'un de mes sites WordPress est en train de subir une double redirection lorsqu'un utilisateur ou un bot tente de visiter une URL sans HTTPS et accompagné d'une barre oblique.

En bref:

  • http://example.com/contact-us redirige vers https://www.example.com/contact-us
  • https://www.example.com/contact-us redirige vers https://www.example.com/contact-us/

Mon fichier htaccess ressemble à ceci:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Que dois-je changer pour éviter ces doubles redirections?

5
Simon Hayter

J'ai réussi à faire fonctionner cela en utilisant un extrait fourni par anubhava on Stack Overflow . Si quelqu'un découvre un problème potentiel avec ce code ou dispose d'une redirection meilleure et plus propre, n'hésitez pas à lui demander votre code comme réponse.

SOURCE

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^domain\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^/?$ https://www.domain.com [R=301,L]

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

Donc mon fichier .htaccess ressemble maintenant à ceci:

RewriteEngine On
RewriteBase /

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

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

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
5
Simon Hayter