J'utilise WordPress et je suis récemment passé à https
. J'ai eu quelques problèmes depuis avec le domaine qui ne redirige pas correctement.
Actuellement, cela fonctionne correctement, mais https://example.com
ne redirige pas vers https://www.example.com
.
J'ai essayé beaucoup de façons mais je n'ai pas réussi jusqu'à présent.
Voici mon htaccess:
RewriteEngine On
RewriteCond %{HTTP_Host} ^example.co.uk [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.co.uk/$1 [R,L]
# 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
# BEGIN rlrssslReallySimpleSSL rsssl_version[2.1.12]
# END rlrssslReallySimpleSSL
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
</IfModule>
Il semblerait que vous manquiez simplement le drapeau OR
:
RewriteCond %{HTTP_Host} ^example\.co\.uk [NC,OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.co.uk/$1 [R,L]
Soit le domaine nu est accédé OR
vous accédez via HTTP puis redirigez. L'opérateur par défaut est AND
les conditions.
Également échapper aux points de votre regex.
Remplacez R
(temporaire) par R=301
(permanent) lorsque vous êtes sûr que tout fonctionne correctement.
UPDATE: Il est possible que SERVER_PORT
ne signale pas le port correct (voir la directive seCanonicalPhysicalPort ). Vous pouvez également utiliser la variable HTTPS
à la place:
RewriteCond %{HTTPS} off
Une autre alternative consiste à tester si l'hôte ne démarre pas www
plutôt que de tester son égalité. Donc, en résumé:
RewriteCond %{HTTP_Host} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]