Comment rediriger www vers non-www avec Apache sur CentOS 7

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 CentOS 7. Nous vous montrerons également comment rediriger dans l’autre sens, d’une URL non www à http: // www [www]. La version Ubuntu 14.04 de ce didacticiel est disponible à l’adresse here .

Si vous souhaitez effectuer ce type de redirection avec Nginx comme serveur Web, vous devez plutôt suivre ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-nginx-on-centos-7 [Comment rediriger www vers non-www avec Nginx sur CentOS 7].

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 n’avez pas déjà configuré cette configuration, suivez ce didacticiel: Installation du serveur initial sur CentOS 7.

On suppose qu’Apache (httpd) est installé. 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.exemple.com [www.exemple.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 Apache

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.

Le module Rewrite, sur CentOS 7, est activé par défaut. S’il n’est pas activé, pour une raison quelconque, veillez à ajouter cette ligne à la section modules de votre configuration Apache (qui se trouve dans + / etc / httpd / conf.modules.d / 00-base.conf + par défaut ):

LoadModule rewrite_module modules/mod_rewrite.so

Activer les fichiers .htaccess

Nous allons configurer Apache avec des règles de redirection utilisant les fichiers + .htaccess +. C’est une fonctionnalité qui doit être activée en relâchant les autorisations du répertoire DocumentRoot.

Ouvrez votre fichier de configuration Apache pour le modifier. Sur CentOS, le fichier de configuration par défaut se trouve dans + / etc / httpd / conf / httpd.conf +, nous allons donc utiliser cela dans notre exemple:

sudo vi /etc/httpd/conf/httpd.conf

En supposant que vous utilisez le paramètre par défaut DocumentRoot, + / var / www / html +, recherchez le bloc de configuration qui lui correspond, + <répertoire" / var / www / html> + `. Dans le bloc, remplacez `+ AllowOverride None + par + AllowOverride +:

Ajouter à la configuration Apache

<Directory >
...
   AllowOverride
...
</Directory>

Sauvegarder et quitter.

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

sudo systemctl restart httpd

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: Mon, 04 May 2015 16:04:56 GMT
Server: Apache/2.4.6 (CentOS)
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 les 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: Mon, 04 May 2015 16:05:26 GMT
Server: Apache/2.4.6 (CentOS)
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].