Apache HTTP Server 版本 2.4
在拥有多个用户的系统上,可以使用 UserDir
指令允许每个用户在其主目录中拥有一个网站。访问 URL http://example.com/~username/
的用户将从用户 "username
" 的主目录中获取内容,该目录位于 UserDir
指令指定的子目录中。
请注意,默认情况下,未启用对这些目录的访问。在使用 UserDir
时,可以通过取消注释以下行来启用访问
#Include conf/extra/httpd-userdir.conf
在默认配置文件 conf/httpd.conf
中,并根据需要调整 httpd-userdir.conf
文件,或者在主配置文件中的 <Directory>
块中包含适当的指令。
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
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-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
如果您想允许用户修改其网页空间中的服务器配置,他们将需要使用 .htaccess
文件来进行这些更改。确保您已将 AllowOverride
设置为足以满足您要允许用户修改的指令的值。有关此工作原理的更多详细信息,请参阅 .htaccess 教程。