每用户 Web 目录

在具有多个用户的系统上,可以使用UserDir指令允许每个用户在其主目录中拥有一个网站。 URL http://example.com/~username/的访问者将从UserDir指令指定的子目录中获得用户“ username”的主目录中的内容。

请注意,默认情况下,未启用对这些目录的访问。您可以通过取消 Comments 以下行来启用使用UserDir时的访问权限:

#Include conf/extra/httpd-userdir.conf

在默认配置文件conf/httpd.conf中,并根据需要修改httpd-userdir.conf文件,或者在主配置文件中的<Directory>块中包含适当的指令。

每个用户的 Web 目录

Related Modules Related Directives
mod_userdir UserDir
DirectoryMatch
AllowOverride

使用 UserDir 设置文件路径

UserDir伪指令指定一个目录,每个用户的内容将从该目录中加载。该指令可以采用几种不同的形式。

如果给出的路径不是以斜杠开头,则假定该路径是相对于指定用户的主目录的目录路径。给定此配置:

UserDir public_html

URL http://example.com/~rbowen/file.html将转换为文件路径/home/rbowen/public_html/file.html

如果给定的路径以斜杠开头,则将使用该路径加上指定的用户名来构建目录路径。给定此配置:

UserDir /var/html

URL http://example.com/~rbowen/file.html将转换为文件路径/var/html/rbowen/file.html

如果提供的路径包含星号(*),则将使用星号替换为用户名的路径。给定此配置:

UserDir /var/www/*/docs

URL http://example.com/~rbowen/file.html将转换为文件路径/var/www/rbowen/docs/file.html

也可以设置多个目录或目录路径。

UserDir public_html /var/html

对于 URL http://example.com/~rbowen/file.html,Apache 将搜索~rbowen。如果找不到,Apache 将在/var/html中搜索rbowen。如果找到,则上述 URL 将被转换为文件路径/var/html/rbowen/file.html

重定向到外部 URL

UserDir指令可用于将用户目录请求重定向到外部 URL。

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

上面的示例会将http://example.com/~bob/abc.html的请求重定向到http://example.org/users/bob/abc.html

限制允许哪些用户使用此功能

使用 UserDir 文档中显示的语法,您可以限制允许哪些用户使用此功能:

UserDir disabled root jro fish

上面的配置将为所有用户启用该功能,但disabled语句中列出的用户除外。同样,您可以使用以下配置为除少数用户以外的所有用户禁用该功能:

UserDir disabled
UserDir enabled rbowen krietz

有关其他示例,请参见UserDir文档。

为每个用户启用一个 cgi 目录

为了给每个用户自己的 cgi-bin 目录,您可以使用<Directory>指令来使用户主目录的特定子目录启用 cgi。

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

然后,假设UserDir设置为public_html,则可以从该目录加载 cgi 程序example.cgi,如下所示:

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

允许用户更改配置

如果要允许用户在其 Web 空间中修改服务器配置,则他们将需要使用.htaccess文件进行这些更改。确保已将AllowOverride设置为足以允许用户修改的指令的值。有关其工作原理的更多详细信息,请参见.htaccess tutorial

首页