.htaccess-comment forcer " www."de façon générique?

cela changera domain.com en www.domain.com :

# Force the "www."
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [R=301,L]

Comment remplacer la partie " domaine "pour que cela fonctionne sur tout domaine?

94
demandé sur StackOverflowNewbie 2011-02-07 00:21:48

8 réponses

j'utiliserais cette règle:

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

la première condition vérifie si la valeur Host N'est pas vide (dans le cas de HTTP/1.0); la deuxième vérifie si la valeur Host ne commence pas par www. ; la troisième vérifie si HTTPS ( %{HTTPS} est soit on soit off , donc %{HTTPS}s est soit ons soit ons ). offs et dans le cas de ons le s est égaler.) La partie de substitution de RewriteRule fusionne alors simplement les parties d'information à une URL complète.

EDIT: ne fonctionne pas avec des URL comme: https://yourdomain.com/en/usa

228
répondu Gumbo 2017-11-18 07:09:13

Cela va faire:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
39
répondu Martin Drapeau 2018-08-06 00:46:38

si vous souhaitez rediriger toutes les requêtes non-www vers votre site vers la version www, tout ce que vous devez faire est d'ajouter le code suivant à votre .fichier htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
4
répondu ClickForWebs 2014-12-17 09:13:06

ça ne marchera pas avec les sous-domaines.

domain.com est correctement redirigé vers www.domain.com

mais

images.domain.com est redirigé vers www.images.domain.com

au lieu de vérifier si le sous-domaine n'est pas "www", Vérifiez s'il y a deux points:

RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
3
répondu john mccarthy 2013-11-24 03:07:28

ce qui suit devrait préfixer 'www' à toute requête qui n'en a pas, et rediriger la requête éditée vers la nouvelle URI.

RewriteCond "%{HTTP_HOST}" "!^www\."         [NC]
RewriteCond "%{HTTP_HOST}" "(.*)"
RewriteRule "(.*)"         "http://www.%1" [R=301,L]
1
répondu RoUS 2011-02-06 21:40:12
RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

cette redirection example.com vers www.example.com à l'exclusion des sous-domaines.

1
répondu starkeen 2017-01-25 05:39:43

cela a fonctionné comme par magie pour moi

RewriteCond %{HTTP_HOST} ^sitename.com [NC] RewriteRule ^(.*) $ https://www.sitename.com / $1 [L, R=301, NC]

-1
répondu SamYah 2017-11-07 09:26:27

il s'agit d'une question plus ancienne, et il existe de nombreuses façons de le faire. La réponse la plus complète, IMHO, se trouve ici: https://gist.github.com/vielhuber/f2c6bdd1ed9024023fe4 . (Coller et formater le code ici n'a pas fonctionné pour moi)

-1
répondu Rick Hellewell 2018-07-12 22:26:18