2010-05-14 4 views
0

J'ai un problème avec la règle de réécritureComment écrire règle de réécriture dans le fichier htaccess

mon lien est www.something/groupe/group_id/lieu/groupName pour cette RewriteBase/

RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L] 

Quelque fois mon URL peut venir www.something/group/group_id/groupName.

Dans les deux cas, je dois réécrire à group.php et je n'ai besoin que de groupid. Comment écrire la règle de réécriture pour travailler dans les deux situations?

Répondre

0

Utilisez des quantificateurs paresseux ou empêchez chaque groupe correspondant de correspondre au / lui-même. La façon dont vous l'avez actuellement, le premier groupe correspondra autant que possible, résultant en des résultats indésirables.

RewriteRule ^group/(.*?)/(.*?)/(.*?)$ /group.php?gid=$1 [QSA,NC,L] 
RewriteRule ^group/([^\/]*)/([^\/]*)/([^\/]*)$ /group.php?gid=$1 [QSA,NC,L] 

Une façon encore meilleure, pour permettre aux gens de quitter les parties inutiles (lire: non nécessaire pour évaluer le résultat sur le côté serveur), vous pouvez même faire quelque chose comme ceci:

RewriteRule ^group/(\d+)(/.*)?$ /group.php?gid=$1 [QSA,NC,L] 

(Ceci est basé sur l'hypothèse que votre id de groupe est un nombre)

+0

merci poke. Ça fonctionne. J'ai appliqué votre dernière suggestion – roopesh

0

Essayez celui-ci:

^group/(.+)(/|/.+)*$ 

Il correspond à
www.something/groupe/group_id/lieu/groupName
www.something/groupe/group_id/groupName

Je ne ai jamais utilisé la RewriteRule, donc ce n'est pas testé. Et peut-être que si vous ajoutez le tag "Regex" à votre question, vous obtiendrez plus de réponses ;-)

Questions connexes