web-dev-qa-db-fra.com

Force https et pas de www en utilisant htaccess

Cette question a déjà été posée un million de fois, mais le problème, c'est que cela ne marche toujours pas, quel que soit le code que j'utilise. Je me demandais si je pouvais avoir de l'aide?

Ceci est mon htaccess actuel et il supprime avec succès le www, mais le https ne fonctionne pas du tout. Je veux qu'il redirige tout le trafic vers https://example.com si l'URL demandée utilise www ou http. Toute aide s'il vous plaît? Merci beaucoup!

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} !^example.com
RewriteRule ^(.*)$ https://example.com/$ [L,R=301]
  • remarque: le moteur de réécriture est activé, quelques lignes plus haut.
2
user49815

Utilisez ceci. Cela devrait vous éviter deux maux de tête.

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

cela permet également à toute URL commençant par http://www.example.com/ ou se connectant au port 80 (port Web standard) de se rediriger vers https: // exemple. com /

5
Mike

Vous pouvez également utiliser les éléments suivants:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_Host} !^domain-name.tld$ [NC]
RewriteRule ^(.*)$ https://domain-name.tld/$1 [L,R=301]
1
itteam

J'ai essayé de nombreuses configurations et règles différentes, la suivante est la seule solution pare-balles qui fonctionne pour moi.

    # match any URL with www and rewrite it to https without the www
    RewriteCond %{HTTP_Host} ^(www\.)(.*) [NC]
    RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]

    # match non https and redirect to https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]

L'ordre est important, car il empêchera dans certains cas une troisième redirection.

Pour un sous-domaine, vous utilisez simplement

    # match non https and redirect to https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]

J'utilise Cloudways associé à Cloudflare et cela fonctionne parfaitement. Tous les autres exemples fournis ont provoqué une boucle de redirection ou n'ont pas pu être résolus.

1
Simon Ilett