The problem is that Caddy will append the request path to the root when looking for files on disk. With just handle, Caddy is basically looking for files at /home/user/xyz/xyz.
For this, you’ll want to use handle_path rather than handle, because that includes stripping the path prefix first.
Thanks, that worked. Is it normal that it’s redirecting /xyz to /, and not ,/xyz/ so the files can be browsed? (as trailing slash works for the browser)
Yes, the redirect is necessary so that the relative URLs for the links in the browser point to the right place. The / is necessary to clarify that it’s actually a directory.