Comment toujours supprimer WWW d’une URL avec mod_rewrite?

J’utilise les éléments suivants pour essayer de supprimer WWW de l’URL:

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

Mais pour une raison quelconque, cela ne fonctionne pas. Aucune suggestion?

Essayer:

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

Et sans mod_rewrite :

  ServerName www.example.com Redirect permanent / http://example.com/  

Les hôtes virtuels peuvent être utilisés en suivant les étapes de l’URL suivante: Configuration d’un hôte virtuel dans Apache .

Voici une solution plus générale:

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

Comme une modification mineure de la réponse de Kyle, je mettrais un / dans la condition de correspondance RewriteRule, comme

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

Sinon, vous obtenez une double barre oblique en conséquence.

 http://www.example.com/smth -> http://example.com//smth 

J’utiliserais toujours 307 (redirection temporaire) car si vous vous trompez, certains navigateurs le mettent en cache de manière permanente. J’ai fini par installer Google Chrome simplement parce que je ne pouvais pas faire oublier à mon Firefox une mauvaise redirection, même lorsque je supprimais tout le cache.

Voici une solution si vous ne souhaitez pas de nom de domaine codé en dur. N’oubliez pas de démarrer le moteur de réécriture ou cela ne fonctionnera pas!

  # Start rewrite engine  Options +FollowSymlinks RewriteEngine On  # Rewrite "www.example.com -> example.com"  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]