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, 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.

Mise en correspondance des URLs avec le système de fichiers
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://exemple.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.