Я пытаюсь предложить нашим пользователям пространство Apache WebDav, где они могут хранить свои файлы календаря (.ics). У меня уже работает проверка подлинности Dav и LDAP. Но я не могу сажать пользователей в некоторые подкаталоги. В конце концов, я не хочу, чтобы они имели доступ к файлам календаря друг друга.
Пример: скажем, пользователь Джон Доу входит в систему. Тогда я бы хотел его "/"путь будет сопоставлен с / var / www / users / johndoe на диске. Чтобы у каждого пользователя был свой каталог.
Что я пробовал до сих пор:
UserDir / var / www / users / * /
но похоже, что этот каталог просто устанавливает путь для / ~ johndoe / requests, чего я не хочу.
RewriteRule ^ / / users /% {REMOTE_USER} [R]
Не получается. И, вероятно, это просто переписывание пути, чего я не хочу.
AliasMatch ^ / / var / www / users /% {REMOTE_USER} /
Это должно отобразить путь к каталогу на диске, но% {REMOTE_USER} не расширяется.
Можно ли заключить авторизованных пользователей в какой-нибудь подкаталог? Заранее спасибо.
Если вы хотите использовать префикс каталога вместо «/», вы можете использовать что-то вроде этого:
# 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]
YMMV