我正在尝试为用户提供一个 Apache WebDav 空间,让他们可以存储日历 (.ics) 文件。我已经运行了 Dav 和 LDAP 身份验证。但我无法将用户限制在某些子目录中。毕竟我不想让他们访问彼此的日历文件。
例如:假设用户约翰多登录。然后我想让他的“/“路径映射到/var/www/用户/johndoe在磁盘上。这样每个用户都有自己的目录。
到目前为止我已经尝试过:
用户目录 /var/www/users/*/
但似乎这个目录只是为 /~johndoe/ 请求设置了路径,这不是我想要的。
重写规则 ^/ /用户/%{REMOTE_USER} [R]
失败。它可能只是重写了路径,这不是我想要的。
AliasMatch ^/ /var/www/users/%{REMOTE_USER}/
这应该将路径映射到磁盘上的目录,但 %{REMOTE_USER} 不会扩展。
是否可以将登录用户限制在某些子目录中?提前致谢。
答案1
如果您愿意使用目录前缀而不是“/”,则可以使用如下内容:
# 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]
年龄变化率