How-To / Tutorials Directorios web por usuario

En sistemas con múltiples usuarios, cada usuario puede tener un website en su directorio home usando la directiva UserDir. Los visitantes de una URL http://example.com/~username/ recibirán el contenido del directorio home del usuario "username", en el subdirectorio especificado por la directiva UserDir.

Tenga en cuenta que, por defecto, el acceso a estos directorios NO está activado. Puede permitir acceso cuando usa UserDir quitando el comentario de la línea:

#Include conf/extra/httpd-userdir.conf

En el fichero por defecto de configuración conf/httpd.conf, y adaptando el fichero httpd-userdir.conf según sea necesario, o incluyendo las directivas apropiadas en un bloque Directory dentro del fichero principal de configuración.

Mapeando URLs al sistema de ficheros
Configurando la ruta del fichero con UserDir

La directiva UserDir especifica un directorio del que cargar contenido por usuario. Esta directiva puede tener muchas formas distintas.

Si se especifica una ruta que no empieza con una barra ("/"), se asume que va a ser una ruta de directorio relativa al directorio home del usuario especificado. Dada ésta configuración:

UserDir public_html

La URL http://example.com/~rbowen/file.html se traducirá en la ruta del fichero /home/rbowen/public_html/file.html

Si la ruta que se especifica comienza con una barra ("/"), la ruta del directorio se construirá usando esa ruta, más el usuario especificado en la configuración:

UserDir /var/html

La URL http://example.com/~rbowen/file.html se traducirá en la ruta del fichero /var/html/rbowen/file.html

Si se especifica una ruta que contiene un asterisco (*), se usará una ruta en la que el asterisco se reemplaza con el nombre de usuario. Dada ésta configuración:

UserDir /var/www/*/docs

La URL http://example.com/~rbowen/file.html se traducirá en la ruta del fichero /var/www/rbowen/docs/file.html

También se pueden configurar múltiples directorios o rutas de directorios.

UserDir public_html /var/html

Para la URL http://example.com/~rbowen/file.html, Apache buscará ~rbowen. Si no lo encuentra, Apache buscará rbowen en /var/html. Si lo encuentra, la URL de más arriba se traducirá en la ruta del fichero /var/html/rbowen/file.html

Redirigiendo a URLs externas

La directiva UserDir puede usarse para redirigir solcitudes de directorios de usuario a URLs externas.

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

El ejemplo de aquí arriba redirigirá una solicitud para http://example.com/~bob/abc.html hacia http://example.org/users/bob/abc.html.

Restringiendo qué usuarios pueden usar esta característica

Usando la sintaxis que se muestra en la documentación de UserDir, usted puede restringir a qué usuarios se les permite usar esta funcionalidad:

UserDir disabled root jro fish

La configuración de aquí arriba permitirá a todos los usuarios excepto a los que se listan con la declaración disabled. Usted puede, del mismo modo, deshabilitar esta característica para todos excepto algunos usuarios usando una configuración como la siguiente:

UserDir disabled UserDir enabled rbowen krietz

Vea la documentación de UserDir para más ejemplos.

Activando un directorio cgi para cada usuario

Para dar a cada usuario su propio directorio cgi-bin, puede usar una directiva Directory para activar cgi en un subdirectorio en particular del directorio home del usuario.

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

Entonces, asumiendo que UserDir está configurado con la declaración public_html, un programa cgi example.cgi podría cargarse de ese directorio así:

http://example.com/~rbowen/cgi-bin/example.cgi
Permitiendo a usuarios cambiar la configuración

Si quiere permitir que usuarios modifiquen la configuración del servidor en su espacio web, necesitarán usar ficheros .htaccess para hacer estos cambios. Asegúrese de tener configurado AllowOverride con un valor suficiente que permita a los usuarios modificar las directivas que quiera permitir. Vea el tutorial de .htaccess para obtener detalles adicionales sobre cómo funciona.