On this page
Apache 模块 mod_userdir
Description: | User-specific directories |
---|---|
Status: | Base |
Module Identifier: | userdir_module |
Source File: | mod_userdir.c |
Summary
Warning
通过使用此模块,您允许多个用户托管同一来源内的内容。相同的来源策略是 Javascript 和网络安全的关键原则。通过托管具有相同来源的网页,这些页面可以相互读取和控制,并且一个页面中的安全问题可能会影响另一个页面。结合涉及动态内容和身份验证的网页以及用户不一定彼此信任时,这特别危险。
此模块允许使用http://example.com/~user/
语法访问用户特定的目录。
UserDir Directive
Description: | 用户特定目录的位置 |
---|---|
Syntax: | UserDir directory-filename [directory-filename] ... |
Context: | 服务器配置,虚拟主机 |
Status: | Base |
Module: | mod_userdir |
UserDir
伪指令将真实目录设置在用户的主目录中,以便在收到针对用户的文档请求时使用。 * Directory-filename *是以下之一:
目录或模式的名称,如下所示。
关键字
disabled
。这将关闭所有用户名到目录的翻译,除非使用enabled
关键字明确命名(见下文)。关键字
disabled
后跟一个用空格分隔的用户名列表。出现在这样的列表中的用户名将永远不会执行目录转换,即使它们出现在enabled
子句中也是如此。关键字
enabled
后跟一个用空格分隔的用户名列表。即使全局禁用生效,这些用户名也将执行目录转换,但如果它们也出现在disabled
子句中,则不会执行。
如果enabled
和disabled
关键字都没有出现在Userdir
指令中,则将该参数视为文件名模式,并用于将名称转换为目录规范。对http://www.example.com/~bob/one/two.html
的请求将转换为:
使用了 UserDir 指令 | Translated path |
---|---|
UserDir public_html | ~bob/public_html/one/two.html |
UserDir /usr/web | /usr/web/bob/one/two.html |
UserDir /home/*/www | /home/bob/www/one/two.html |
以下指令将重定向发送到 Client 端:
使用了 UserDir 指令 | Translated path |
---|---|
UserDir http://www.example.com/users | http://www.example.com/users/bob/one/two.html |
UserDir http://www.example.com/*/usr | http://www.example.com/bob/usr/one/two.html |
UserDir http://www.example.com/~*/ | http://www.example.com/~bob/one/two.html |
Be careful when using this directive; for instance, "UserDir ./" would map "/~root" to "/" - which is probably undesirable. It is strongly recommended that your configuration include a "UserDir disabled root" declaration. See also the Directory directive and the Security Tips page for more information.
Additional examples:
要允许一些用户拥有UserDir
目录,但没有其他任何人,请使用以下命令:
UserDir disabled
UserDir enabled user1 user2 user3
要允许大多数用户拥有UserDir
目录,但要拒绝少数用户,请使用以下命令:
UserDir disabled user4 user5 user6
也可以指定备用用户目录。如果您使用以下命令:
UserDir "public_html" "/usr/web" "http://www.example.com/"
要求http://www.example.com/~bob/one/two.html
时,它将尝试首先在~bob/public_html/one/two.html
处找到页面,然后在/usr/web/bob/one/two.html
处找到页面,最后将重定向发送到http://www.example.com/bob/one/two.html
。
如果添加重定向,则它必须是列表中的最后一个替代方法。 Apache httpd 无法确定重定向是否成功,因此,如果您在列表中的较早位置进行了重定向,则将始终使用该替代方法。
默认情况下,在 2.1.4 和更高版本中,用户目录替换是不活动的。在早期版本中,如果不存在UserDir
指令,则假定为UserDir public_html
。
Merging details
特定启用和禁用用户的列表从全局主机范围替换为虚拟主机范围,而不是合并