2010-03-08 5 views
0

je voudrais une aide simple et ... i ont une URL comme ceci: example.com/profile.php?id= & name =Comment obtenir un twitter comme url

mon fichier .htaccess comme celui-ci . (.)?

RewriteRule^profil/(. )/profile.php id = 1 & $ name = 2

$ j'ai donc une url final comme celui-ci: example.com/profile/id/ le nom

je peux faire example.com/id~~V~~3rd

mais comment puis-je obtenir une URL comme ceci:

example.com/name

??

thax

+0

Voulez-vous dire que vous voulez que votre URL à seulement le nom, mais ne contient pas l'ID? –

Répondre

0

Si ce que vous cherchez est exactement ceci:

example.com/name

Vous devrez changer votre profile.php pour attendre que la variable nom, et de l'utiliser interroger la base de données.

Je crois que vous avez déjà eu quelque chose comme:

mysql_query("SELECT * from table where id=$id"); 

Vous aurez besoin de changer pour être

mysql_query("SELECT * from table where name$name"); 

Alors vous dites votre page d'interroger l'utilisateur par le nom, au lieu de par l'ID. Il y a quelques inconvénients liés à cela, car votre requête ne sera pas aussi rapide qu'auparavant, car je crois que votre colonne de nom n'est pas la clé primaire, donc pas d'indexation.

Twitter utilise Rails, donc ils appellerez dans un utilisant quelque chose comme (onMissingMethod) de manière légèrement différente:

get_user_by_username() 

Ce qui est pas génial non plus, car il est l'interrogation encore la base de données par une chaîne, mais a quelques améliorations de performance pour permettre aux rails de le faire.

Votre htaccess alors Looki comme:

RewriteRule ^(.*) profile.php?name=$1 

Espoir qui répond à votre question

+0

vraiment bon ... thx pour tous ... vraiment vraiment ... – fabio

+0

i obtenir une page de redirection incorrecte je peux utiliser le rewritecond dans l'URL. - -> profile.php? id = $ 1 & name = $ 2 ?? le profile.php a vraiment besoin du "id" ... thx – fabio

1

De toute évidence, votre script profile.php attend deux variables GET et votre n'a qu'une seule URL souhaitée. Vous devrez donc probablement modifier à la fois le script et le schéma de votre base de données.

1

Votre règle de réécriture est subtilement erronée. Le vôtre ne sélectionne qu'un seul caractère dans chacune des parties entre crochets. Si vous mettez un * après chaque point, celui-ci sélectionne à la place un ou plusieurs caractères que je pense être ce dont vous avez besoin.

RewriteRule ^profile/(.*)/(.*) profile.php?id=$1&name=$2 
+0

Ceci est vrai, mais ne répond pas tout à fait à la question. Il cherche un chemin avec seulement 1 barre oblique. –

+0

oups - mon erreur - mal lu la question :( – iblamefish