After a good night’s sleep and a revisit to the docs, I found the answer, which was as simple as I have come to expect from Caddy.
The easiest solution was to add the directory exemptions maually:
@redirects {
not file
not path /prspy* /mapgallery* /manual*
}
php_fastcgi unix//run/php/php8.3-fpm-homepage.sock
rewrite @redirects /index.php?page2={file}
But in another scenario where I could reliably exclude directories, changing the matcher to not files {path} {path}/
worked perfectly. I just had to also add an exemption for an empty path so a request to the root/empty domain would properly call the index.php.