Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4 > Recettes et tutoriels

# Répertoires web utilisateurs

Sur les systèmes multi-utilisateurs, on peut permettre à chaque utilisateur d'avoir un site web dans son répertoire home à l'aide de la directive `UserDir`. Les visiteurs de l'URL `http://example.com/~nom_utilisateur/` recevront un contenu situé dans le répertoire home de l'utilisateur "`nom_utilisateur`", et dans le sous-répertoire spécifié par la directive `UserDir`.

Notez que par défaut, l'accès à ces répertoires n'est pas permis. Vous pouvez en permettre l'accès à l'aide de la directive `UserDir` en décommentant la ligne :

    #Include conf/extra/httpd-userdir.conf

dans le fichier de configuration par défaut `conf/httpd.conf`, et en adaptant le fichier `httpd-userdir.conf` selon vos besoins, ou en incluant les directives appropriées dans une section `<Directory>` du fichier de configuration principal.

### Voir aussi

- Mise en correspondance des URLs avec le système de fichiers

## Répertoires web utilisateurs

Modules Apparentés | Directives Apparentées
--- | ---
`mod_userdir` | `UserDir` `DirectoryMatch` `AllowOverride`

## Définition du chemin des fichiers avec UserDir

La directive `UserDir` permet de spécifier un répertoire à partir duquel le contenu de l'utilisateur pourra être chargé. Elle peut revêtir plusieurs formes.

Si le chemin spécifié ne commence pas par un slash, il sera interprété comme chemin relatif au répertoire home de l'utilisateur considéré. Par exemple, avec cette configuration :

    UserDir public_html

l'URL `http://example.com/~rbowen/fichier.html` correspondra au chemin fichier `/home/rbowen/public_html/fichier.html`

Si le chemin spécifié commence par un slash, le chemin du fichier sera construit en utilisant ce chemin, suivi du nom de l'utilisateur considéré. Par exemple, avec cette configuration :

    UserDir /var/html

l'URL `http://example.com/~rbowen/fichier.html` correspondra au chemin fichier `/var/html/rbowen/fichier.html`

Si le chemin spécifié contient un astérisque (*), ce dernier sera remplacé par le nom de l'utilisateur dans le chemin du fichier correspondant. Par exemple, avec cette configuration :

    UserDir /var/www/*/docs

l'URL `http://example.com/~rbowen/fichier.html` correspondra au chemin fichier `/var/www/rbowen/docs/fichier.html`

On peut aussi définir plusieurs répertoires ou chemins de répertoires.

    UserDir public_html /var/html

Avec l'URL `http://example.com/~rbowen/fichier.html`, Apache va rechercher `~rbowen`. S'il ne le trouve pas, Apache va rechercher `rbowen` dans `/var/html`. S'il le trouve, l'URL ci-dessus correspondra au chemin fichier `/var/html/rbowen/file.html`

## Redirection vers des URLs externes

On peut utiliser la directive `UserDir` pour rediriger les requêtes relatives aux répertoires utilisateurs vers des URLs externes.

    UserDir http://example.org/users/*/

L'exemple ci-dessus va rediriger une requête pour `http://example.com/~bob/abc.html` vers `http://exemple.org/users/bob/abc.html`.

## Définition de la liste des utilisateurs autorisés à utiliser cette fonctionnalité

En suivant la syntaxe décrite dans la documentation de UserDir, vous pouvez définir quels utilisateurs sont autorisés à utiliser cette fonctionnalité :

    UserDir disabled root jro fish

La configuration ci-dessus va autoriser l'utilisation de la fonctionnalité pour tous les utilisateurs, à l'exception de ceux listés à la suite de l'argument `disabled`. De même, vous pouvez interdire l'utilisation de la fonctionnalité à tous les utilisateurs sauf certains d'entre eux en utilisant une configuration du style :

    UserDir disabled
    UserDir enabled rbowen krietz

Vous trouverez d'autres exemples dans la documentation de `UserDir`.

## Définition d'un répertoire CGI pour chaque utilisateur

Afin de réserver un répertoire cgi-bin pour chaque utilisateur, vous pouvez utiliser une section `<Directory>` pour activer CGI dans un sous-répertoire particulier d'un répertoire home utilisateur.

    <Directory "/home/*/public_html/cgi-bin/">
        Options ExecCGI
        SetHandler cgi-script
    </Directory>

Avec la configuration ci-dessus, et en supposant que `UserDir` est défini à `public_html`, un programme CGI `exemple.cgi` pourra être chargé depuis ce répertoire en passant par l'URL :

`http://example.com/~rbowen/cgi-bin/exemple.cgi`

## Permettre aux utilisateurs de modifier la configuration

Si vous voulez que vos utilisateurs puissent modifier la configuration du serveur pour ce qui concerne leur espace web, ils devront utiliser des fichiers `.htaccess` pour effectuer ces modifications. Assurez-vous d'avoir défini la directive `AllowOverride` à une valeur appropriée pour les directives dont vous voulez permettre la modification aux utilisateurs. Voir le tutoriel .htaccess pour plus de détails sur la manière dont tout ceci fonctionne.