2009-04-22 7 views
3

Supposons que j'ai l'url http://example.com/user/me, où moi est le nom d'utilisateur. Lorsque l'utilisateur tape l'URL dans la barre d'adresse, je veux révéler les détails de l'utilisateur. Je ne veux pas urls tels que http://example.com/user.php?user=meComment faire des URL lisibles?

Toute aide appréciée, travaillant sur LAMP

+0

Cherchez-vous à faire quelque chose de similaire dans votre propre code, ou à modifier SO? (Suggérer une clarification rapide, sinon il sera pris comme suggestion pour SO, qui appartient à User Voice.) – Richard

+0

dans mon code, url était de rendre les choses faciles –

+0

Consultez ce tutoriel [mod_rewrite] (http: //www.workingwith. me.uk/articles/scripting/mod_rewrite) –

Répondre

5

Une façon de le faire est d'utiliser le module de apache appelé mod_rewrite. Vous pouvez ensuite réécrire les URL pour /user/([a-z]+) pour pointer vers /user.php?user=$1

Recherchez la documentation pour mod_rewrite pour les détails.

4

La façon la plus simple serait (en .htaccess, dans la configuration de votre serveur ou dans votre configuration vhosts):

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Cela transmettra toutes vos demandes qui ne correspondent pas à un fichier, un répertoire ou un symbolique lien vers votre index.php. Là, vous pouvez inspecter l'URI de la demande pour déterminer ce qu'il faut faire. En fait, vous aurez besoin d'une sorte de répartiteur qui sait comment déconstruire l'URL pour déterminer quelle action doit être effectuée. En fait, cela pourrait entraîner une mise en œuvre de MVC - mais ce n'est pas une exigence.

+0

hey, echo $ _GET ['u']; echo "
"; $ count = strlen ($ _ SERVER ['PHP_SELF']); echo "premier comptage; $ compte
"; $ nme = $ count - strlen (PSE); echo "deuxième décompte; $ nme
"; echo substr ($ _ SERVER ['PHP_SELF'], $ nme); ? –

+0

aussi ce qui précède ne fait que cela http://stackoverflow.com/user/me/ et pas ce http://stackoverflow.com/user/me remarquez le "/" –

0
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?u=$1 
Questions connexes