====== Découverte par l'exemple de redirection apache2 ====== * Objet : Découverte par l'exemple de redirection apache * Niveau requis : {{tag>débutant avisé}} * Commentaires : //vous avez un site déjà en ligne et vous voulez appliquer une redirection d'une page vers une autre page. // * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Suivi : * Création par [[user>trebmuh]] 08/11/2015 * Testé par [[user>trebmuh]] le 08/11/2015 * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=145833 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) * {{tag>à-placer}} ===== 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 [[:asso:salon-irc-df|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 [[:doc:reseau:apache2:multisite|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 casse((c'est à dire : ne fait pas de différence entre les majuscules et les minuscules)) * L = "Dernier"((en ninngliche : "**L**ast")) - arrête de lire les autres règles Plusse d'information : [[http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/]] (en ninngliche). ===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 à " et donc, le client refait une requête sur 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..