对用户网络的使用,我经历了一点点波折,主要的原因有几点:
1. 需要启动用户,例如用户liyl就需要在配置文件中配置UserDir liyl
2. 需要在httpd.conf中将所含用户的访问权限配置成可以访问的权限,例如:
<Directory /home/liyl>
Order Deny,Allow
Allow from all
</Directory>
3. 修改用户目录的权限,例如:chmod 755 liyl
4. 修改文件的权限,例如:chmod 755 index.html
以下内容摘录自金步国翻译的Apache文档:
用户网站目录
在多用户系统中,用UserDir指令可以允许每个用户在其宿主目录中拥有一个网络站点。使用URL http://example.com/~username/ 的访问者可以获得用户"username"的宿主目录中的内容或者用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可以限定被允许使用此功能的用户:
UserDir enabled
UserDir disabled root jro fish
上述配置使除了列在disabled中的用户以外的所有用户都可以使用此功能。还可以禁止所有用户而只允许部分用户使用此功能,例如:
UserDir disabled
UserDir enabled rbowen krietz
更多的例子请参见UserDir文档。
<Directory>指令可以指定每个用户主目录中的一个特定的目录为"允许cgi"的目录,使每个用户都可以拥有自己的cgi-bin目录。
<Directory /home/*/public_html/cgi-bin/>
Options ExecCGI
SetHandler cgi-script
</Directory>
这样"放肆的"设置使得UserDir被设置成public_html ,CGI程序example.cgi可以用下面的URL从那个目录加载:
http://example.com/~rbowen/cgi-bin/example.cgi
用户可以通过.htaccess文件改变其网络空间的服务器配置,因此必须确保AllowOverride指令被正确设置,以限定用户只能使用被允许的指令。其细节请参见.htaccess指南。