Sua webroot não é / (certo?), portanto, é correto que -d não tenha sido atingido. Ele está tentando corresponder /wpsa/ ao sistema de arquivos, literalmente - não em relação à webroot.
A razão pela qual você está fornecendo /wpsa/ como sua entrada de string em vez de /path/to/webroot/wpsa , o que funcionaria como esperado, é que você está usando %{REQUEST_FILENAME} no contexto errado.
Quando %{REQUEST_FILENAME} é usado em um contexto em que o mapeamento do sistema de arquivos já está pronto, como em um bloco <Directory> ou .htaccess , o caminho completo é retornado e -d funcionará como você espera.
REQUEST_FILENAME
The full local filesystem path to the file or script matching the request, if this has already been determined by the server at the time REQUEST_FILENAME is referenced. Otherwise, such as when used in virtual host context, the same value as REQUEST_URI.
Parece que você está usando em um contexto <VirtualHost> ou <Location> , o que o torna funcionalmente idêntico a %{REQUEST_URI} . Se você quiser mantê-lo nesse contexto, tente:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d