Un code retour personalisé avec apache
Petite astuce pour un problème que j’ai rencontré il y a quelques temps avec apache. Je souhaitais modifier le code retour d’une requête (en l’occurrence remplacer un code 403 par 404).
J’ai été surpris de ne trouver aucun module pour le faire, sécurité, redirection ou autre contrôle sur les requêtes.
La solution trouvée fut d’utiliser un script cgi, qui se charge de faire la réponse à la place d’apache, et est appelé en page d’erreur. Cela donne :
ScriptAlias /cgi-bin/ /home/www/cgi/ ErrorDocument 403 /cgi-bin/404.cgi
Le script en question est fait en bash pour simplifier les choses :
#!/bin/sh echo Status: 404 Not Found echo Content-type: text/html echo cat << EOM <!DOCTYPE HTML PUBLIC \\"-//IETF//DTD HTML 2.0//EN\\"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL ${REQUEST_URI} was not found on this server.</p> <hr> <address>Apache/2.2.22 (Debian) Server at chimrod.com Port 80</address> </body></html> EOM exit 0
et voilà !