El error está no en tus reglas htaccess sino en la forma en que lo estás planteando. Es decir, nunca deberías haber generado urls con parámetros con espacios ni nigún caracter especial.
Desde PHP puedes filtrarlos mediante el siguiente código:
Código PHP:
function seourl($url) {
// Tranformamos todo a minusculas
$url = strtolower($url);
// Añaadimos los guiones
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);
//Rememplazamos caracteres especiales latinos
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);
// Eliminamos y Reemplazamos demás caracteres especiales
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}
Si la query a la base de datos ejecuta una búsqueda de coincidencia de un término, entonces lo mejor sería que agregues un campo más con la palabra procesada con ese script y busque coincidencia de la url y ese campo.
El cambio implicaría también pensar muy bien redireccionamientos 301s, urls canónicas y muchísimas cuestiones técnicas bastante complicadas... Si ya tienes las páginas bien posicionadas, entonces la verdad que no vale la pena arriesgarse...