Fix: correctly return 404 on missing file