É uma pena que a configuração do Apache não seja tão flexível quanto a do nginx, então você pode fazer algo como:
Alias /dav /path/to/dav/store/$REMOTE_USER
No entanto, você pode usar REMOTE_USER
em uma regra de reescrita, assim:
RewriteEngine On
RewriteRule ^/dav(.*)$ /__davinternal/%{LA-U:REMOTE_USER} [PT]
Em seguida, coloque toda a sua beleza auth / DAVish em um <Location /__davinternal>
e Bob é o amante do seu auntie.
Isso funciona muito bem se você tiver locais consistentes em seu sistema de arquivos para todos os seus usuários (digamos, /path/to/dav/store/<username>
); Se você tem pastas de usuários espalhadas pelo sistema de arquivos (com um mapeamento no MySQL), você ainda pode mapear seus locais de usuários, mas você tem que usar um RewriteMap
:
RewriteMap davdirs txt:/path/to/user/dir/map.txt
RewriteRule /^dav(.*)$ /__davinternal/${davdirs:%{LA-U:REMOTE_USER}}
Você pode fazer um RewriteMap direto do MySQL (através de um script externo), mas eu tentaria fazer com que meu aplicativo atualizasse um arquivo dbm sempre que as informações de mapeamento fossem alteradas e usasse um mapa do dbm - desempenho muito melhor e não martela seu banco de dados no chão.
Eu não abordei as implicações de segurança dessas configurações nessa resposta, em parte porque não tenho certeza e porque não sei qual é a sua política de segurança exata.