Yo lo que hago es crear un campo más en mi tabla en la que guardo el texto de la url sin tildes ni caracteres especiales, de modo que al momento de guardar los datos en la tabla llamo a la función con la que reemplazo todos estos caracteres y los guardo en dicho campo
Código PHP:
function chars_replace($string) {
$busqueda = array("Á","É","Í","Ó","Ú","Ñ","á","é","í","ó","ú","ñ"," ");
$reemplazo = array("A","E","I","O","U","N","a","e","i","o","u","n","-");
return(str_replace($busqueda, $reemplazo, $string));
}
Ahora cuando llamo a algún artículo por $_GET, lo hago mediante el campo que tiene los caracteres limpios, espero te sirva la idea, ahí puedes agregarlos todos los caracteres que deses, p.ej. comas, puntos, parentesis, etc.