如何将经过身份验证的 Apache 用户映射到他们自己的目录?

Sig*_*num 5 users webdav apache-2.2

我正在尝试为我们的用户提供一个 Apache WebDav 空间,他们可以在其中存储他们的日历 (.ics) 文件。我已经运行了 Dav 和 LDAP 身份验证。但是我没有将用户监禁到某些子目录中。毕竟我不希望他们访问彼此的日历文件。

示例:假设用户johndoe登录。然后我想将他的“ / ”路径映射到磁盘上的/var/www/users/johndoe。这样每个用户都有自己的目录。

到目前为止我尝试过的:

  1. 用户目录 /var/www/users/*/

    但似乎这个目录只是设置了 /~johndoe/ 请求的路径,这不是我想要的。

  2. 重写规则 ^/ /users/%{REMOTE_USER} [R]

    失败。它可能只是重写了不是我想要的路径。

  3. AliasMatch ^/ /var/www/users/%{REMOTE_USER}/

    这应该将路径映射到磁盘上的目录,但 %{REMOTE_USER} 不会扩展。

是否可以将登录用户监禁到某个子目录?提前致谢。

cod*_*ead 2

如果您愿意使用目录前缀而不是“/”,则可以使用如下内容:

# Let's setup WebDAV first
<Directory /var/lib/storage>
        Dav On
        Options Indexes
        AllowOverride None
</Directory>
# Now we'll set up the user area mapping
RewriteCond %{REQUEST_URI} ^/storage/
RewriteRule ^/storage/(.*?)$ /var/lib/storage/user/%{LA-U:REMOTE_USER}/$1 [L]
Run Code Online (Sandbox Code Playgroud)

此外,可以使用 /~user/ 语法以只读方式访问相同的用户目录

# Public area can be accessed as https://server/~user/
RewriteCond %{REQUEST_URI} ^/~
RewriteCond %{REQUEST_METHOD} ^(GET|POST)$
RewriteRule ^/~([^/]+)/?(.*)    /var/lib/storage/user/$1/$2 [L]
Run Code Online (Sandbox Code Playgroud)

青年MMV