aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique/2012-08-12-apache.rst
blob: 1101266a993347e2efea35b8714758d2a9215a26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.. -*- mode: rst -*-
.. -*- coding: utf-8 -*-

Un code retour personalisé avec apache
######################################

:date: 2012-08-12
:tags: Libre, Hébergement

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 :

.. code-block:: bash

    ScriptAlias /cgi-bin/ /home/www/cgi/
    ErrorDocument 403 /cgi-bin/404.cgi

Le script en question est fait en bash pour simplifier les choses :

.. code-block:: bash

    #!/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à !