Mi scuso in anticipo nel caso in cui questa non sia la seziona adatta all'argomento.

Ho (finalmente) terminato di costruire il mio sito in php/mysql, o quasi... e adesso mi ritrovo ad affrontare qualcosa con cui non ho mai avuto a che fare: il mod rewrite. Ho la necessità di rendere le url del sito più appetibili per i motori di ricerca.

Il problema non è tanto quello di ottenere le url statiche ma è sostituire gli id con i titoli. Mi spiego meglio:

Ho url del tipo: http://root/sottocartella/prodotto.php?id_prodotto=1

Nell'.htaccess assegno la seguente regola:

RewriteRule ^sottocartella/([A-Za-z0-9-]+).html$ sottocartella/prodotto.php?id_prodotto=$1 [L]

Ottenendo urls del tipo: http://root/sottocartella/1.html

Vorrei però che invece di 1.html, ci fosse il titolo del prodotto, per esempio 'macchina.html'.

Quello che vi chiedo è se esiste un sistema per evitare di trasformare la query che estrare il prodotto dal db. Il codice è:

Codice PHP:
//Verifico l'esistenza di un id_prodotto e il tipo di id
if((!isset($_GET['id_prodotto'])) || (!is_numeric($_GET['id_prodotto'])))
{
//Se l'id non è valido, reindirizzo all'index
header("Location: index.php");
}else{
$id_prodotto $_GET['id_prodotto']; 
}

$prodotto_sql $data->query("SELECT * FROM prodotti WHERE id_prodotto = $id_prodotto"); 
Trasformando "WHERE id_prodotto = $id_prodotto" in "WHERE titolo_prodotto = $titolo_prodotto", potrei risolvere, ma allora dovrei cambiare anche il controllo dell'id e !is_numeric non avrebbe più senso di esistere, correndo quindi qualche rischio in più per la sicurezza.

Quindi vorrei capire se invece di sostituire la clausola WHERE nella query, potrei agire in altro modo.