web-dev-qa-db-fra.com

Comment forcer un sous-domaine www sur HTTPS et HTTP?

Pour une raison quelconque, je n'arrive pas à comprendre. J’ai examiné de nombreux exemples ici et sur le site Web d’Apache. J'essaie de forcer www.example.com au lieu de example.com sur les deux HTTP et HTTPS, mais je n'essaie pas de forcer l'utilisation de HTTPS au lieu de HTTP.

Le code suivant semble fonctionner pour toutes les connexions HTTPS, mais ne provoquera pas de redirection pour les connexions HTTP.

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301]

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301]
1
Brian Perin

J'ai eu le même problème, et le ci-dessous l'a résolu pour moi.

RewriteEngine On
RewriteCond %{HTTP_Host} !^$
RewriteCond %{HTTP_Host} ^example\.com [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [R=301,L]
1
koljanep

Votre solution semble juste. Mais laissez-moi vous fournir quelques points de contrôle que vous pouvez effectuer.

  • HTTP et HTTPS sont-ils configurés pour pointer vers le même répertoire physique?
  • Avez-vous essayé de demander sur la faute du serveur?
  • Pouvez-vous essayer d'utiliser des modificateurs pour vérifier comme

Code:

RewriteEngine On
RewriteCond %{HTTPS} = on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} != on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]
1
Dave