Question Htaccess générique redirige www vers non-www


Je voudrais rediriger www.example.com à example.com. Le code htaccess suivant rend cela possible:

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

Mais y a-t-il un moyen de le faire de manière générique sans coder en dur le nom de domaine?


452
2017-10-24 18:19


origine


Réponses:


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Pareil que Michael sauf celui-ci fonctionne: P


798
2017-08-13 06:05



Mais si nous devons faire cela pour http et https séparés:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

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

98
2018-03-19 08:51



Réorienter non-www à www (les deux: http + https)

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

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

69
2018-03-10 15:42



Si vous voulez le faire dans le fichier httpd.conf, vous pouvez le faire sans mod_rewrite (et apparemment c'est mieux pour les performances).

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

J'ai eu cette réponse ici: https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507


44
2018-03-10 02:31



Voici les règles pour rediriger une URL www vers no-www:

#########################
# redirect www to no-www
#########################

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]

Voici les règles pour rediriger une URL no-www vers www:

#########################
# redirect no-www to www
#########################

RewriteCond %{HTTP_HOST} ^(?!www\.)(.+) [NC]
RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L]

Notez que j'ai utilisé NE flag pour empêcher apache d'échapper à la chaîne de requête. Sans cet indicateur, apache changera l'URL demandée http://www.example.com/?foo%20bar à http://www.example.com/?foo%2250bar


31
2018-04-28 10:21



RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R]

Le RewriteCond capture tout dans la variable HTTP_HOST après le "www." et l'enregistre en% 1. Le RewriteRule capture l'URL (sans mener "/") et l'enregistre dans $ 1.


11
2017-10-24 20:00



Essaye ça:

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

Si l'hôte commence par www, nous plaçons tout l'hôte sur le début de l'URL, puis déconnectez le "www."


7
2017-10-24 18:26



Je trouve qu'il peut y avoir beaucoup de désinformation sur les redirections htaccess. Tout d'abord, assurez-vous que votre site fonctionne sur Unix en utilisant Apache et non sur un hôte Windows si vous pensez que ce code fonctionnera.

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

(Assurez-vous qu'il n'y a pas d'espaces entre chaque ligne de texte, cependant, j'ai ajouté un espace supplémentaire entre les lignes pour que tout se passe bien dans cette fenêtre.)

Ceci est un extrait de code qui peut être utilisé pour diriger la version www de votre site vers la version http: //. Il existe d'autres codes similaires qui peuvent également être utilisés.


6
2018-01-17 16:06



Gestionnaire de WWW générique complet, http / https

Je n'ai pas vu une réponse complète. J'utilise ceci pour gérer l'inclusion WWW.

  1. Générique. Ne nécessite pas d'informations sur le domaine.
  2. Force WWW sur le domaine principal: www.domain.com
  3. Supprime WWW sur les sous-domaines: sub.domain.com
  4. Conserve le statut HTTP / HTTPS.
  5. Autorise les cookies individuels pour les domaines / sous-domaines

S'il vous plaît laissez-moi savoir comment cela fonctionne ou si j'ai laissé une faille.

RewriteEngine On
RewriteBase /

# Force WWW. when no subdomain in host
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Remove WWW. when subdomain(s) in host     
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)(.+\.)(.+\.)(.+)$ [NC]
RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L]

5
2018-02-09 16:43