Ciao utile pillola,Originariamente inviato da stefano3804
Questo serve (a quanto ho letto nell'ultimo mese nella sezione motori di ricerca di questo forum e da quanto ho visto nelle varie agenzie di SEO = search engine optimized) a far digerire ancora meglio le nostre pagine ai vari MDR.
La rule che dovrete usare sarà sempre la stessa:
però nella vostra pagina php (cioè la notizie.php) userete il comando explode e metteremo questo :codice:RewriteEngine On RewriteRule ^notizie/([^/]+).html notizie.php?id=$1 [L]
Codice PHP:
<?php
$pagina = $_GET[id];
$divisore = explode("-", $pagina);
$id = $divisore[0];// ti restituisce il numero che hai prima del -
$query = mysql_query("Select * from notizie where id='$id'");
?>
Spero di essermi spiegato in modo chiaro e che vi possa essere utile
in particolare l'osservazione che ho quotato, mette in risalto l'unico neo del mod_rewite (che rimane il sistema più efficiente per la riscrittura degli url): non è possibile ottenere le coppie chiave-valore quando il numero di variabili passato non è conosciuto in anticipo (cosa invece possibile con la query string).
La soluzione è passare un'unica variabile che contenga una stringa da spezzare.
Visto che, quando il numero di valori non è noto in anticipo, comunque bisogna spezzare le stringhe attraverso PHP io preferisco usare la direttiva "action" di Apache, per ridirigere tutte le richieste ad un unico script (una specie di front controller che fa tutto).
Ad esempio
AddHandler rewriting1 .phtml
Action rewriting1 /path/controller.php
AddHandler rewriting2 .ext
Action rewriting2 /path/controller.php
In questo modo posso decidere che tutte le pagine con una data estensione vadano redirette a controller.php
e anche pagine inesistenti es.
dir/chiave1-valore1/chiave2-valore2/chiave3-valore3.phtml
Vengono inviate a controller.php che ricava chiavi e valori
Vantaggi: più semplice di mod_rewrite se si utilizza abitualmente un controller
Svantaggi: un unico script deve fare tutto e se non si utilizza già un controller meglio ricorrere a mod_rewite