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

我正试图为我们的用户提供一个Apache WebDav空间,用于存储他们的日历(.ics)文件。 我已经得到了Dav和LDAPauthentication。 但我没有把用户监禁到一些子目录。 毕竟我不希望他们访问彼此的日历文件。

例如:假设用户johndoelogin,那么我想把他的“ / ”path映射到磁盘上的/ var / www / users / johndoe 。 这样每个用户都有自己的目录。

我到目前为止所尝试的:

  1. UserDir / var / www / users / * /

    但似乎这个目录只是设置/〜johndoe /请求的path,这是不是我想要的。

  2. RewriteRule ^ / / users /%{REMOTE_USER} [R]

    失败。 而这可能只是改写了我不想要的path。

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

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

是可以监狱login用户的一些子目录? 提前致谢。

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

# 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] 

而且,相同的用户目录可以使用/〜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] 

因人而异