Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Découverte par l'exemple de redirection apache2

Introduction

Alors vala, je cherchais sur debian-facile un genre de doc : “OK, alors t'y connais rien et tu veux que lorsqu'un utilisateur clique sur un lien http://tonsite.fr/moulin/parlà dans une des pages de ton site (qui est déjà en ligne), il soit automatiquement redirigé vers http://tonsite.fr/cuisine/cestici ? Voici la redirection apache à appliquer.” … et, malheur de malheur, y'en avait pas :-/
Heureusement pour moi, il y avait un m31z0nyx qui traînait ses guêtres sur le canal IRC de debian-facile et qui lui, savait comment faire ça.

Allez zou, assez parlé de ma vie, voici le tuto.

Installation

Il faut avoir un site en ligne avec un apache fonctionnel (et le greffon “rewrite” installé) et allez chopper en édition le .htaccess, c'est dans ce fichier que se font les redirections.

Utilisation

Donc, résumons la demande : j'ai une page qui s'affiche et qui contient le lien http://tonsite.fr/moulin/parlà et je veux qu'elle redirige vers : http://tonsite.fr/cuisine/cestici

Nous allons donc utiliser une règle apache de ré-écriture d'adresse :

RewriteRule ^moulin/parlà$ cuisine/cestici [R,NC,L]

Explications :

  • ^ = début de la chaîne de caractère
  • $ = fin de la chaîne de caractère
  • R = redirige / redirection
  • NC = non-sensible à la casse2)
  • L = “Dernier”3) - arrête de lire les autres règles

Remarque 1

On pourrait se dire que le L va mettre le foin car il va empêcher la lecture des autres règles. Mais non, car on demande à ce que le client refasse sa requête et donc il faut que ça s'arrête là.
Cette règle renvoie une réponse au client, donc il ne faut pas continuer à traiter… et le navigateur client voit arriver une première réponse qui lui dit “hey, c'est plus ici, maintenant c'est à <nouvelle_url>” et donc, le client refait une requête sur <nouvelle_url> et là, la règle de redirection ne correspond plus, par contre d'autres règles plus loin dans le .htaccess peuvent correspondre.

Remarque 2

Il faut étudier les autres règles du .htaccess car l'ordre des règles influe.

Remarque 3

Si la redirection doit être “permanente”, il faut remplacer le R par R=301. “Permanente”, c'est à dire que le navigateur (ou moteur de recherche ou autre) doit conserver l'url cible. Donc, au coup suivant, avec une redirection permanente, le navigateur demandera directement la cible.
L'inverse de “permanente” est “temporaire”, cas où le navigateur doit conserver l'adresse initiale. Avec une redirection temporaire, il suffit de retirer la règle du .htaccess et on retrouve l'ancienne url.

Remarque 4

La prise en compte est normalement immédiate car le serveur apache vérifie le fichier .htaccess à chaque requête. Ceci dit, il faut faire attention aux caches des navigateurs/moteurs-de-recherche/…

À titre d'exemple, avec Iceweasel, il faut faire un Ctrl+⇧ Shift+Suppr et cocher la case “cache” puis cliquer sur le bouton “Effacer maintenant”.

Remarque 5

Une façon rapide de tester que la redirection est bien prise en compte est d'utiliser wget car il indique les redirections.

Remarque 6

Il peut être intéressant (à des fins de testage) de mettre la redirection en premier dans le .htaccess pour voir si elle fonctionne bien. Ceci dit, il faut faire attention car ça peut mettre le souk ailleurs..

1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2) c'est à dire : ne fait pas de différence entre les majuscules et les minuscules
3) en ninngliche : “Last”
doc/reseau/apache2/redirection.txt · Dernière modification: 08/11/2015 19:26 par milou

Pied de page des forums

Propulsé par FluxBB