Comment rediriger www.example.com vers example.com sans passer par 1 pointage DNS ou 1 redirection ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Contexte : un site Drupal 6 est installé sur un domaine du type example.com, sans les www, donc sur l'url : http://example.com

Problème : Comment rediriger le (sous-)domaine www.example.com vers example.com sans passer par un pointage DNS de type CNAME ou par une redirection fournie par le prestataire nom de domaine ? autrement dit comment le faire uniquement avec Drupal (ou Apache) ? le tout en D6 ?

Précision : example.com est un site dans une install multi-site de Drupal, donc il est dans /sites/example.com

But : que les visiteurs du site qui tapent www.example.com soient proprement redirigés sur example.com, y compris s'ils tapent une URL drupal du type www.example.com/node/15, qui devrait donc rediriger vers example.com/node/15 ?

Merci de vos réponses.

Version de Drupal : 

Dans le fichier settings.php, la variable $base_url est normalement utilisée pour cela.

Par contre, ça veut aussi dire que l'adresse IP de www.example.com est la même que example.com.

Dans le fichier .htaccess, il y a également un exemple de redirection :

  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} ^example.com$ [NC]
  # RewriteRule ^(.)$ http://www.example.com/$1 [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment and adapt the following:
  # RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
  # RewriteRule ^(.
)$ http://example.com/$1 [L,R=301]

Dans ton cas il vaut peut-être mieux regarder de ce côté

Si tu es en interne ou en local, une ligne dans un fichier hosts ça marche bien.

Sur un réseau local, sans DNS, il va falloir ajouter la ligne dans le fichier de toutes les machines.

Sur le net, sans DNS point de salut. Généralement, la déclaration du nom de domaine se fait sans le www (example.com) ; le www est alors juste un sous-domaine.

Perso ce que je fais, c'est un second vhost. C'est simple à mettre en oeuvre et tu peux inclure toutes tes redirections d'un coup (.com => .fr, www => rien, mobile => m, etc.)

<VirtualHost *:80>
  ServerName tagazok.fr
  ServerAlias m.tagazok.fr
  DocumentRoot /var/www/tagazok

  <Directory "/var/www/tagazok">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.tagazok.fr
    ServerAlias www.tagazok.com
    ServerAlias tagazok.com
    ServerAlias mobile.tagazok.fr
    ServerAlias mobile.tagazok.com
    Redirect / http://tagazok.fr/
</VirtualHost>