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.