Un Court Script CGI Pour Passer 404s A Un Autre Serveur

Gazette Linux n°168 — Novembre 2009

par Silas Brown (Copyright © 2009) ssb22@cam.ac.uk

traduction par BEN EL HADJ Ali (tous droits réservés) benelhadj-ali@hotmail.fr


Il y a plusieurs raisons pour lesquelles vous pourriez avoir plus qu'un site Web. Par exemple, vous pourriez avoir un compte sur un serveur rapide avec une part limitée et un autre sur un serveur qui est plus lent, mais a plus d'espace, et vous gardez certains fichiers qui sont rarement utilisés sur le serveur le plus lent. Ou bien vous pourriez avoir un alias facile à s'en rappeller de dyndns, qui pointe vers votre serveur domestique, mais quelques pages sur un autre serveur qui a une meilleur connexion mais une adresse plus longue. Si c'est le cas, il pourrait donc être utile de reserver un serveur pour y diriger toutes les requettes pour les pages qu'il n'a pas pu trouvé dans l'autre serveur. Vous pouvez alors utiliser le premier serveur pour toutes les adresses saisies, et s'il contient la requette de la page, il la retourne, si non le navigateur sera redirigé automatiquement pour verifier la même page sur le deuxième serveur. (Ne programmez pas ce serveur de façon à ce qu'il retourne voir sur le premier serveur, si non vous allez créer une boucle infinie.)

En utilisant Apache, ça peut être accomplie comme il suit. Premierement, mettre la ligne public_html/.htaccess dans votre fichier, en remplaçant /~your-user-ID de la façon suivante:

ErrorDocument 404 /~your-user-ID/cgi-bin/redirect.cgi

Cela dit à Apache de démarer le script à chaque fois qu'il s'agira normalement d'une 404. Si vous voulez que la redirection prenne place dans index.html aussi (Cela si index.html n'est pas disponible), alors vous devez aussi rajouter :

Options -Indexes
ErrorDocument 403 /~your-user-ID/cgi-bin/redirect.cgi

Cela evite le listage de repertoires, et dit à Apache d'envoyer le navigateur vers le script de redirection au lieu d'afficher le message "Forbidden". Cet arrangement peut s'averer utile si votre site principal se trouve dans l'autre serveur, mais ce serveur contient quelques fichiers de plus que vous voulez qu'Apache verifie en premier.

Créez alors public_html/cgi-bin/redirect.cgi comme il suit, en remplaçant other-site-address-goes-here et ~your-user-IDde façon appropriée:

#!/bin/bash
echo Status: 301 Moved
echo Location: "$(echo "$REQUEST_URI"|sed -e s,/,http://other-site-address-goes-here/, -e s,~your-user-ID/,,)"
echo

En suite chmod +x public_html/cgi-bin/redirect.cgi et testez.

Le script ci-dessus devrait fonctionner sans tenir compte de si ~your-user-ID est inclu dans la requette, cela si, Apache est le serveur de public_html dans votre propre nom d'hote, alors ce script devrait fonctionner sans tenir compte de si la requette entrante concerne votre nom d'hote ou votre ID d'utilisateur dans le principal nom d'hote.

Quelques ancien navigateurs peuvent ne pas suivre la redirection 301. Si cela est le cas, vous pouvez alors rajouter du texte dans la reponse aussi. Mais le script en lui même, est petit est facile à mettre en place, et il devrait fonctionner sans problèmes dans la plupart des cas.


Silas Brown

Silas Brown est un informaticien à Cambridge au Royaume-Uni. Il a utilisé des versions personnalisées de Debian Linux depuis 1999.


Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site http://www.traduc.org/Gazette_Linux

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.