Comment rediriger www vers non-www avec Apache sur Ubuntu 14.04

introduction

Lorsque votre site Web ou votre application est opérationnel derrière un domaine, il est souvent souhaitable d’autoriser également vos utilisateurs à y accéder via le nom de domaine complet et le sous-domaine * www *. Autrement dit, ils devraient pouvoir visiter votre domaine avec ou sans le préfixe «http: // www. [Www.]», Par exemple. + example.com + ou + www.example.com +, dans un navigateur Web et affiche le même contenu. Bien qu’il existe différentes façons de configurer cela, la meilleure solution, pour des raisons de cohérence et de référencement, consiste à choisir le domaine que vous préférez, brut ou www, et de rediriger l’autre vers le domaine préféré. Ce type de redirection s’appelle une * redirection permanente * ou «redirection 301» et peut être facilement configuré en configurant correctement vos enregistrements de ressources DNS et votre logiciel de serveur Web.

Ce tutoriel vous montrera comment rediriger une URL www vers un site non-www, par exemple. + www.example.com + à + ​​example.com +, avec Apache sur Ubuntu 14.04. Nous vous montrerons également comment rediriger dans l’autre sens, d’une URL non www à http: // www [www]. La version CentOS 7 de ce didacticiel est disponible à l’adresse here.

Si vous souhaitez effectuer ce type de redirection avec Nginx en tant que serveur Web, vous devez plutôt suivre ce didacticiel: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-nginx-on-ubuntu-14-04 [Comment rediriger des www vers des non-www avec Nginx sur Ubuntu 14.04].

Conditions préalables

Ce tutoriel suppose que vous avez les privilèges de superutilisateur, c.-à-d. + sudo + ou root, sur le serveur qui exécute Apache. Si vous ne l’avez pas déjà configuré, suivez ce tutoriel: Initial Initial Server Setup on Ubuntu 14.04 .

Il est supposé que vous avez installé Apache. Si vous ne disposez pas déjà de cette configuration, il existe plusieurs tutoriels sur le sujet sous la balise Apache.

Vous devez pouvoir ajouter des enregistrements au DNS qui gère votre domaine. Si vous ne possédez pas déjà un domaine, vous pouvez en acheter un auprès d’un registraire de domaine et le gérer avec le DNS du registraire ou https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean- serveurs de noms de domaine commun (DNS de DigitalOcean). Dans ce didacticiel, nous utiliserons le DigitalOcean DNS pour créer les enregistrements nécessaires.

Commençons par configurer vos enregistrements DNS.

Configurer les enregistrements DNS

Afin de configurer la redirection souhaitée, + www.example.com + à + ​​example.com + ou vice-versa, vous devez disposer d’un * A record * pour chaque nom.

Ouvrez ce que vous utilisez pour gérer votre DNS. Pour notre exemple, nous allons utiliser le DNS DigitalOcean.

Si un enregistrement de domaine (également appelé zone) n’existe pas, créez-en un maintenant. Le * nom d’hôte * doit être votre domaine, par exemple. + example.com +, et l’adresse IP doit être définie sur l’adresse IP publique de votre serveur Apache. Cela créera automatiquement un enregistrement A qui pointe votre domaine vers l’adresse IP que vous avez spécifiée. Si vous utilisez un autre système pour gérer votre domaine, vous devrez peut-être l’ajouter manuellement.

Ensuite, ajoutez un autre enregistrement A avec le nom d’hôte «www» (ou «http://www.example.com [www.example.com]» si le sous-domaine partiel ne fonctionne pas) et spécifiez la même adresse IP.

Lorsque vous avez créé les deux enregistrements, cela devrait ressembler à ceci:

image: https: //assets.digitalocean.com/articles/redirect/dns_a_records.png [Enregistrements A requis]

Votre serveur devrait maintenant être accessible via les domaines www et non-www, mais nous devons tout de même configurer la redirection. Nous allons le faire maintenant.

Activer le module de réécriture

Pour effectuer la redirection 301, nous allons utiliser le module Apache * mod_rewrite * ou Rewrite. Cela garantira que vos utilisateurs pourront accéder à votre site avec ou sans le préfixe * www. * Et être redirigés vers le domaine que vous préférez.

Commencez par activer le module mod_rewrite avec cette commande:

sudo a2enmod rewrite

Avec le module Rewrite activé, nous pouvons configurer Apache avec des règles de redirection utilisant les fichiers + .htaccess +.

Activer les fichiers .htaccess

Ouvrez votre fichier de configuration Apache pour le modifier. Sur Ubuntu, le fichier de configuration par défaut se trouve dans + / etc / apache2 / sites-enabled / 000-default.conf +, nous allons donc utiliser cela dans notre exemple:

sudo vi /etc/apache2/sites-enabled/000-default.conf

Recherchez la racine de document de votre site et notez-la. Par défaut, il s’agit de + / var / www / html +, nous allons donc l’utiliser dans notre exemple de configuration.

Ajoutez la directive Directory suivante à la configuration et assurez-vous de remplacer DocumentRoot par la partie en surbrillance:

Ajouter à la configuration Apache

<Directory >
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
</Directory>

Sauvegarder et quitter.

Maintenant, redémarrez Apache pour que le changement prenne effet:

sudo service apache2 restart

Apache est maintenant configuré pour lire le fichier + .htaccess situé n’importe où dans le répertoire` + / var / www / html`. Ajoutons maintenant nos règles de réécriture.

Configurer le module de réécriture

Comme nous l’avons mentionné précédemment, nous allons configurer le module Rewrite à l’aide d’un fichier + .htaccess +.

Remplacez les répertoires par la racine de votre document, dans notre cas, + / var / www / html:

cd /var/www/html

Maintenant ouvrez + .htaccess + pour l’édition:

sudo vi .htaccess

Bien sûr, si vous n’avez pas créé le fichier auparavant, il sera vide. Selon la direction que vous souhaitez rediriger, utilisez l’une des options suivantes.

Option 1: Rediriger www vers non-www

Si vous souhaitez rediriger les utilisateurs de www vers un domaine simple et non www, insérez cette configuration:

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

Sauvegarder et quitter. Les changements devraient entrer en vigueur immédiatement. Notez que si vous utilisez HTTPS, vous devez mettre à jour «http», dans la ligne + RewriteRule +, en «https».

Utilisez cette commande curl pour vous assurer que le domaine non-www redirige vers le domaine www (remplacez la partie en surbrillance par votre domaine actuel):

curl -I http://www.

Vous devriez obtenir une réponse +301 Moved Permanently +, qui indique l’emplacement de la redirection non-www, comme ceci:

Output:HTTP/1.1 301 Moved Permanently
Date: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
Location: http:///
Content-Type: text/html; charset=iso-8859-1

Bien sûr, vous devez accéder à votre domaine via un navigateur Web (www et non www).

Option 2: Rediriger les non-www vers www

Si vous souhaitez rediriger des utilisateurs d’un domaine simple non-www vers un domaine www, insérez cette configuration:

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

Sauvegarder et quitter. les changements devraient entrer en vigueur immédiatement. Notez que si vous utilisez HTTPS, vous devez mettre à jour «http», dans la ligne + RewriteRule +, en «https».

Utilisez cette commande curl pour vous assurer que le domaine non-www redirige vers le domaine www (remplacez la partie en surbrillance par votre domaine actuel):

curl -I http://

Vous devriez obtenir une réponse +301 Moved Permanently +, qui indique l’emplacement de la redirection www, comme ceci:

Output:HTTP/1.1 301 Moved Permanently
Date: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
Location: http://www./
Content-Type: text/html; charset=iso-8859-1

Bien sûr, vous devez accéder à votre domaine via un navigateur Web (www et non www).

Conclusion

C’est ça! Votre redirection Apache est maintenant correctement configurée et vos utilisateurs pourront accéder à votre serveur Web via vos domaines autres que www et www.

Si vous souhaitez en savoir plus sur * mod_rewrite *, la fonctionnalité Apache utilisée pour implémenter la redirection, n’hésitez pas à lire ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-set- up-mod_rewrite [Comment configurer Mod_Rewrite].