browser lang:en
mod_rewrite in pratica
2.0- Let's check it out!
Procediamo per casi analizzando alcuni URL-tipo che ognuno di noi ha incontrato almeno una volta. Sono solo degli esempi, riadattabili alle proprie esigenze. Il consiglio è di leggere in modo lineare tutti i casi, e non solo la parte finale.
Lo scenario è la sezione news di un sito.
Ricordate che in ogni file htaccess dovete inserire, prima delle regole, la direttiva RewriteEngine On.
2.1- Riscrittura "base"
URL prima dell'intervento: www.domain.tld/news/index.php?id=1234
URL dopo l'intervento: www.domain.tld/news/notizia-1234.html
Codice:
RewriteRule ^notizia-([0-9]+)\.html$ index.php?id=$1
- ([0-9]+) uno o più (+) caratteri numerici da 0 a 9 ([0-9])
- \.html indica ".html" (. è un metacarattere che vuol dire qualsiasi carattere, dobbiamo effettuare l'escape).
- $1 viene sostituito con il valore "trovato" dalla regexp ([0-9]+)
Ok, abbiamo tolto la querystring (hai detto niente!). Ma non è proprio il sistema più raffinato e la semantica è a 0.
2.2- Gestire più parametri
URL prima dell'intervento: www.domain.tld/news/index.php?id=1234&cat=recensione
URL dopo l'intervento: www.domain.tld/news/recensione-1234.html
Codice:
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?id=$2&cat=$1
Consiglio: invece di usare (.+) (qualsiasi carattere in qualsiasi quantità) è più saggio usare ([^/]+) che vuol dire "qualsiasi carattere tranne lo slash in qualsiasi quantità".
2.3- Associazioni tra ID e stringhe
URL prima dell'intervento: www.domain.tld/news/categoria.php?id=2
URL dopo l'intervento: www.domain.tld/news/recensioni.html
Codice:
RewriteRule ^([^/]+)\.html$ index.php?nomecat=$1
Codice PHP:
$cat = $_GET['nomecat'];
$categoria = mysql_query("SELECT id FROM categorie WHERE nome='$cat'");
if (mysql_num_rows($categoria)==0) {
Make404(......);
} else {
$categoria = mysql_num_rows($categoria);
$news = mysql_query("SELECT .... FROM news WHERE categoria='$categoria[0]'");
ShowNews(......);
}
2.4- Il caso ideale
URL prima dell'intervento: www.domain.tld/news/index.php?id=1234
URL dopo l'intervento: www.domain.tld/news/recensioni/php6-usera-goto-1234.html
Codice:
RewriteRule ^([^/]+)/([^/]+)-([0-9]+)\.html$ index.php?id=$3&cat=$1&titolo=$2
Codice PHP:
$newsid = $_GET['id']; // non serve fare il cast con (int)
$news = mysql_query("SELECT ... FROM news WHERE id='$newsid'");
if (mysql_num_rows($news)==0) {
Make404(......);
} else {
.....
// supponiamo di avere in $cat la categoria letta dal database
// e in $titolo il.. titolo ovviamente
if ($cat != $_GET['cat'] || ottimizza($titolo) != $_GET['titolo']) {
// è stato cambiato titolo o categoria
make301('http://www.domain.tld/news/' . $cat . '/' . $titolo . '-' . $newsid . '.html');
}
NewsClass:ShowNews(......);
}
* la funzione ottimizza deve essere la stessa usata per mostrare gli URL nella pagina con l'elenco delle news per evitare problemi di doppi-redirect e serve per eliminare spazi, caratteri accentati, ecc.
* la funzione make301 deve inviare un header 301, un header location e bloccare lo script (con exit; )
* la semantica di questi URL è molto buona (un file chiamato come la news contenuto in una directory correlata)
* se la news viene spostata di categoria o rinominata, viene automaticamente generato un header 301 invece di un 404
Per i piú smemorati, una lista di comandi principali usati con linux cd : cambia la directory corrente. ls : mostra il…
in:Scripts e tutorials (0 commenti)Con l'avvento di caffeine molti webmaster si sono trovati a dover rivedere tutte le strategie SEO per i…
in:Scripts e tutorials (0 commenti)Questo è un widget di jQuery per il nuovo social network di Google-Buzz-che è possibile incorporare ovunque per…
in:Scripts e tutorials (0 commenti)Questo é un pratico codificatore/decodificatore/decriptatore (chiamatelo come volete) di password inserite nei file di configurazione .ste su dreamweaver function…
in:Scripts e tutorials (0 commenti)Il PageRank è un algoritmo che usa Google per valutare la credibilità e l'autorevolezza delle pagine Web. Il…
in:Scripts e tutorials (8 commenti)Con questo script possiamo limitare il download di un file dal nostro server php; il limite di velocitá…
in:Scripts e tutorials (0 commenti)Alcuni host hanno disabilitati nei settaggi del.ini i comandi allow_url_fopen. Questo significa anche non poter usare i vantaggi…
in:Scripts e tutorials (2 commenti)Gli SHORT URLS fanno ormai parte di quelle cose di internet che ci suonono terribilmente familiari; per capirci…
in:Scripts e tutorials (0 commenti)
