Comment créer des redirections temporaires et permanentes avec Apache

introduction

La redirection HTTP est un moyen de faire pointer un domaine ou une adresse vers un autre. Il existe différents types de redirections, chacune signifiant quelque chose de différent du navigateur client. Les deux types les plus courants sont les redirections temporaires et les redirections permanentes.

Les redirections temporaires (code de statut de réponse * 302 trouvés *) sont utiles si une URL doit être servie temporairement à partir d’un autre emplacement. Par exemple, si vous effectuez la maintenance du site, vous pouvez utiliser une redirection temporaire de votre domaine vers une page d’explication pour informer vos visiteurs que vous reviendrez bientôt.

Les redirections permanentes (code d’état de la réponse * 301 déplacé de façon permanente *), par contre, informent le navigateur qu’il doit complètement oublier l’ancienne adresse et ne plus tenter d’y accéder. Celles-ci sont utiles lorsque votre contenu a été déplacé de manière permanente vers un nouvel emplacement, comme lorsque vous changez de nom de domaine.

Vous pouvez créer une redirection temporaire dans Apache en ajoutant une ligne comme celle-ci à l’entrée de l’hôte virtuel dans le fichier de configuration du serveur:

Redirect

De même, utilisez une ligne comme celle-ci pour une redirection permanente:

Redirect permanent

Ce guide explique plus en détail comment implémenter chaque type de redirection dans Apache et donne quelques exemples pour des cas d’utilisation spécifiques.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

La solution en un coup d’œil

Dans Apache, vous pouvez effectuer des redirections simples d’une page à l’aide de la directive + Redirect +, incluse dans le module + mod_alias + activé par défaut sur une nouvelle installation d’Apache. Cette directive prend au moins deux arguments, l’ancienne URL et la nouvelle URL, et peut être utilisée pour créer des redirections temporaires et permanentes.

Dans sa forme la plus simple, vous pouvez effectuer une redirection temporaire avec les lignes suivantes dans la configuration de votre serveur:

Redirection temporaire avec redirection

<VirtualHost *:80>
   ServerName www.domain1.com
   Redirect / http://www.domain2.com
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain2.com
   . . .
</VirtualHost>

Cette redirection demande au navigateur de diriger toutes les demandes de + www.domain1.com + vers + www.domain2.com +. Cette solution ne fonctionne toutefois que pour une seule page d’accueil et non pour l’ensemble du site.

Pour rediriger plus d’une page, vous pouvez utiliser la directive + RedirectMatch +, qui utilise regular expressions pour spécifier des expressions entières. répertoires au lieu de fichiers uniques. + RedirectMatch + correspond aux modèles d’expression régulière entre parenthèses, puis référence le texte correspondant dans la destination de redirection à l’aide de l’expression '+ $ 1 + , où + 1 + `est le premier groupe de texte correspondant. Dans des exemples plus complexes, les groupes appariés suivants reçoivent des numéros de manière séquentielle.

Par exemple, si vous souhaitez rediriger temporairement chaque page avec + www.domain 1.com + vers + www.domain 2.com +, vous pouvez utiliser les éléments suivants:

Redirection temporaire avec RedirectMatch

<VirtualHost *:80>
   ServerName www.domain1.com
   RedirectMatch ^/(.*)$ http://www.domain2.com/$1
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain2.com
   . . .
</VirtualHost>

Par défaut, les deux directives + Redirect + et + + RedirectMatch + établissent une redirection temporaire. Si vous souhaitez créer une redirection permanente, vous pouvez le faire en ajoutant + permanent + à l’une des directives suivantes:

Redirections permanentes

Redirect  / http://www.domain2.com
RedirectMatch  ^/(.*)$ http://www.domain2.com/$1

Vous pouvez également créer des redirections plus souples et plus puissantes avec le module + mod_rewrite +. Cela sort du cadre de cet article, mais vous pouvez commencer avec + mod_rewrite + dans https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on -ubuntu-14-04 [Comment configurer mod_rewrite pour Apache].

Passons à quelques exemples spécifiques.

Exemple 1 - Passage dans un domaine différent

Si vous avez établi une présence sur le Web et souhaitez changer votre domaine en une nouvelle adresse, il est préférable de ne pas abandonner votre ancien domaine. Les signets vers votre site et les liens vers votre site situés sur d’autres pages d’Internet se briseront si votre contenu disparaît sans que le navigateur ne sache comment trouver son nouvel emplacement. Si vous changez de domaine sans rediriger vos pages, votre site perdra le trafic de vos précédents visiteurs.

Dans cet exemple, nous allons configurer une redirection de l’ancien domaine appelée + domain1.com + vers le nouveau nommé + domain2.com +. Nous allons utiliser des redirections permanentes ici car l’ancien domaine sera supprimé et tout le trafic devrait désormais aller vers le nouveau domaine.

Supposons que votre site Web soit configuré pour être servi depuis un seul domaine appelé + domain1.com + déjà configuré dans Apache comme suit:

/etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain1.com
   ServerAlias www.domain1.com
   DocumentRoot /var/www/domain1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Nous supposerons également que vous servez déjà votre future version du site Web à + ​​domain2.com +:

/etc/apache2/sites-available/domain2.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain2.com
   ServerAlias www.domain2.com
   DocumentRoot /var/www/domain2.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Modifions le fichier de configuration de l’hôte virtuel + domain 1.com + pour ajouter une redirection permanente vers + domain 2.com +:

/etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName domain1.com
   ServerAlias www.domain1.com
   DocumentRoot /var/www/domain1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Nous avons ajouté la redirection susmentionnée à l’aide de la directive + RedirectMatch +. Nous utilisons + RedirectMatch + au lieu d’un simple + Redirect + pour nous assurer que toutes les pages du site Web seront affectées, pas seulement la page d’accueil. L’expression régulière + ^ / (. *) $ + Correspond à tout ce qui suit le + / + de l’URL. Par exemple, + http: // domain1.com / + sera redirigé vers + http: // domain2.com / +. Pour réaliser la redirection permanente, nous ajoutons simplement + permanent + après la directive + RedirectMatch +.

Exemple 2 - Création d’une expérience persistante malgré des changements de nom de page uniques

Il est parfois nécessaire de modifier les noms des pages individuelles déjà publiées et de recevoir du trafic sur votre site. Changer le nom seul provoquerait une erreur 404 Introuvable pour les visiteurs essayant d’accéder à l’URL d’origine, mais vous pouvez éviter cela en utilisant une redirection. Cela garantit que les personnes qui ont marqué vos anciennes pages de signets ou les ont trouvées via des liens obsolètes sur les moteurs de recherche atteindront toujours la page correcte.

Imaginons que votre site Web comporte deux pages distinctes pour les produits et services, appelées + products.html et` + services.html`, respectivement. Vous avez maintenant décidé de remplacer ces deux pages par une seule page d’offre intitulée + offers.html +. Nous allons configurer une redirection simple pour + products.html et` + services.html` vers + offers.html.

Nous supposons que votre site Web est configuré comme suit:

Configuration de l’hôte virtuel d’origine supposée

<VirtualHost *:80>
   ServerName example.com
   . . .
</VirtualHost>

Configurer les redirections est aussi simple que d’utiliser deux directives + Redirect +.

Redirections ajoutées à la configuration d’origine

<VirtualHost *:80>
   ServerName example.com



   . . .
</VirtualHost>

La directive + Redirect + accepte l’adresse d’origine à rediriger ainsi que l’adresse de destination d’une nouvelle page. Comme le changement ici n’est pas temporaire, nous avons également utilisé + permanent + dans la directive. Vous pouvez utiliser autant de redirections de ce type que vous le souhaitez pour vous assurer que vos visiteurs ne verront pas les erreurs inutiles Introuvable lors du déplacement du contenu du site.

Conclusion

Vous avez maintenant les connaissances nécessaires pour rediriger les demandes vers de nouveaux emplacements. Veillez à utiliser le type de redirection correct, car une mauvaise utilisation des redirections temporaires peut nuire au classement de votre recherche.

Il existe plusieurs autres utilisations des redirections HTTP, notamment le forçage de connexions SSL sécurisées (c’est-à-dire en utilisant + https au lieu de` + http`) et en s’assurant que tous les visiteurs ne se retrouveront que sur l’adresse préfixée + www. + du site Web.

L’utilisation correcte des redirections vous permettra de tirer parti de votre présence Web actuelle tout en vous permettant de modifier la structure de votre site si nécessaire. Si vous souhaitez en savoir plus sur les moyens de rediriger vos visiteurs, Apache dispose d’une excellente documentation sur le sujet, disponible en mod_alias et http: //httpd.apache.org/docs/current/mod/mod_rewrite.html[mod_rewrite] dans la documentation officielle.