web-dev-qa-db-fra.com

Comment puis-je forcer mon site à ne servir que du HTTPS et des non-www?

J'ai un WordPress installer où tous les liens sont https://example.com. Ainsi, les utilisateurs qui tentent d'accéder au site via https://www.example.com verront le site, mais aucune des images et des ressources ne se chargera.

Comment forcer tous les utilisateurs à être redirigés vers le même domaine? Je préférerais que tout le monde soit à https://example.com.

Est-ce quelque chose que je peux faire avec les paramètres DNS du domaine, dans l'hôte/serveur ou dans WordPress lui-même?

Mise à jour: J'utilise Apache.

Mise à jour 2:

Toutes les conditions que j'essaie d'attraper:

Types d'utilisateurs,

  1. http://example.com
  2. http://www.example.com
  3. https://example.com
  4. https://www.example.com
  5. example.com
  6. www.example.com

Si je comprends bien, les conditions 5 et 6 devraient être les mêmes que 1 et 2. Mais je le mets là, juste au cas où. La condition 3 est l'endroit où je veux que les utilisateurs aillent, cela devrait donc fonctionner par défaut.

1-6 devrait rediriger vers -> https://example.com

3
gdaniel

Sur quel serveur web utilisez-vous?

Nginx

Pour supprimer www in nginx, procédez comme suit.

if ($Host = 'www.example.com' ) {
    rewrite  ^/(.*)$  http://example.com/$1  permanent;
}

Cela va dépouiller le www.

Pour forcer https:

rewrite ^ https://$server_name$request_uri? permanent;

Dans ce sens.

Apache

Force https:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Strip www:

RewriteCond %{HTTP_Host} ^www\.(.+)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
4
Ewan Valentine