🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Apache模块 mod_userdir | [说明](#calibre_link-11) | 允许用户从自己的主目录中提供页面(使用"/~username") | | --- | --- | | [状态](#calibre_link-12) | 基本(B) | | [模块名](#calibre_link-13) | userdir_module | | [源文件](#calibre_link-14) | mod_userdir.c | ### 概述 此模块允许使用类似`http://example.com/~user/`的语法来访问用户网站目录。 ## UserDir 指令 | [说明](#calibre_link-18) | 用户网站目录的位置 | | --- | --- | | [语法](#calibre_link-19) | `UserDir _directory-filename_` | | [作用域](#calibre_link-20) | server config, virtual host | | [状态](#calibre_link-21) | 基本(B) | | [模块](#calibre_link-22) | mod_userdir | `UserDir`指令指定了用户目录下的一个实实在在的目录,存放了该用户提供访问的文档。_Directory-filename_可以是以下几种形式之一: * 一个目录名或如下所示的匹配模式: * 关键词`disabled`停止_所有_用户名到目录的转换,但不包括明确使用`enabled`启用的(见下面)目录。 * 关键词`disabled`并跟随一个以空格分隔的用户名列表(其中的用户即使出现在`enabled`的用户列表中,也_不会_进行目录转换)。 * 关键词`enabled`并跟随一个以空格分隔的用户名列表。此列表中的用户允许进行目录转换,即使有一个全局的`disabled`关闭了此操作,但是,如果同时出现在`disabled`的用户列表中,则不执行转换操作。 如果在`Userdir`指令中,既没有`enabled`也没有`disabled`关键词,则其参数将被视为文件匹配模式,用于转换成目录名。对`http://www.foo.com/~bob/one/two.html`的请求会被转换为: | UserDir 指令 | 转换后的路径 | | --- | --- | | 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 | 下列指令将发送重定向到客户端: | UserDir 指令 | 转换后的路径 | | --- | --- | | UserDir http://www.foo.com/users | http://www.foo.com/users/bob/one/two.html | | UserDir http://www.foo.com/*/usr | http://www.foo.com/bob/usr/one/two.html | | UserDir http://www.foo.com/~*/ | http://www.foo.com/~bob/one/two.html | **注意:使用此指令时要很小心,例如"`UserDir ./`"可能会把"`/~root`映射到"`/`"而这可能不是我们想要的。强烈建议在配置文件中包含一个"`UserDir disabled root`"声明。更多信息请参见`Directory`指令和[安全提示](#calibre_link-263)。** 举例: 允许某些用户使用`UserDir`指令,而禁止其他用户: ``` UserDir disabled UserDir enabled user1 user2 user3 ``` 允许大多数用户使用`UserDir`指令,而禁止一小部分用户: ``` UserDir enabled UserDir disabled user4 user5 user6 ``` 还可以指定任选其一的(alternative)用户网站目录: ``` Userdir public_html /usr/web http://www.foo.com/ ``` 对http://www.foo.com/~bob/one/two.html的请求,会首先尝试获取"~bob/public_html/one/two.html",其次是"/usr/web/bob/one/two.html",最后产生一个到http://www.foo.com/bob/one/two.html的重定向。 如果要增加重定向,则必须放在列表的最后。因为Apache不能判断重定向是否成功,所以如果不放在最后,那么它只是一个替换地址。 2.1.4及以后的版本中,默认不开启用户网站目录。在未设置`UserDir`指令的情况下将使用"`UserDir public_html`"默认值。 ### 参见 * [用户网站目录](#calibre_link-268)