Lo que tienes que hacer es en tu código fuente transformar los espacios en los caracteres %20
Si usas PHP, lo haces utilizando la función url_encode(), a la que pasas como parámetro la URL del link que vas a poner, por ejemplo:
echo url_encode("www.dominio.com/id-1-str ing1-string2.htm");
Eso imprimiría:
www.dominio.com/id-1-str%20ing1-string2.htm
Después en la consulta MySQL, creo que tendrías que hacer un url_decode() para revertir el cambio, es decir, transformar los %20 de nuevo en espacios y que así no dé error la consulta...
No sé si el .htaccess te podría ayudar en este caso