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 è:
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.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");
Quindi vorrei capire se invece di sostituire la clausola WHERE nella query, potrei agire in altro modo.