Pode ser um problema de permissão e configuração.
O servidor web (usuário www-data) precisa de + x em todas as pastas no caminho, portanto, para /home/username/web/ , /home , /home/username/ e /home/username/web tem que ter o + x definido para o mundo. Além disso, /home/user/web precisa ter permissão de leitura para o servidor da Web e o mesmo para o conteúdo.
Além disso, o Apache precisa ser configurado para isso. Quando você pergunta por uma pasta por usuário, presumo que esteja pensando no típico example.com/~username?
Esta é tradicionalmente a pasta public_html com o Apache. Isso está configurado com a diretiva UserDir . Isso está bem documentado na Documentação do Apache . Assim, você teria que adicionar UserDir web para usar a pasta web em vez de public_html.