March 13th, 2010Url per username in stile facebook, myspace, ecc… con Apache
Mi sono trovato a volte con la necessità di avere indirizzi url del tipo:
www.nomesito.com/username
dove come su facebook, myspace, e di altri siti del genere, un utente può avere un url con il suo stesso username nell’indirizzo, di facile memorizzazione.
La soluzione qui proposta è per chi utilizza Apache come webserver, e prevede un editing del file .htaccess nella root del sito.
Il file .htaccess (se non esiste bisogna crearlo) deve contenere:
Options +FollowSymLinks RewriteEngine On RewriteBase /
RewriteRule ^([a-zA-Z_0-9\-]+)$ user.php?username=$1
in questo modo obblighiamo Apache e reindirizzare un url del tipo www.nomesito.com/username alla pagina www.nomesito.com/user.php?username=username.
Lo script user.php dovrà poi prelevare la variabile $_GET['username'], e (una volta resa sicura contro sql injection), andrà a prelevare dal db i dati dell’utente il cui username corrisponde al contenuto della variabile.
Nell’esempio il rewriterule prevede la possibilità dei soli caratteri alfanumerici, più l’underscore _ e il meno -.
Anche in fase di registrazione dell’utente bisognerà stare particolarmente attenti a non permettere l’utilizzo di caratteri diversi da quelli ammessi dal rewriterule.
Ovviamente il file user.php, nonchè la variabile username, così come i caratteri ammessi dalla regola di rewrite, possono essere sostituiti con ciò che ci serve.