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

# Directorios web por usuario

mod_userdir
UserDir
DirectoryMatch
AllowOverride

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