2010-09-22 6 views
0

J'ai des jeux comme url/xbox/2
2 étant le numéro de page j'ai besoin de l'url réécrit. C'est ce que j'utilise:Problème avec .htaccess et RewriteRule

RewriteRule games/(.*?)/$ games/consoles.php?console=$1 
RewriteRule games/(.+?)/(.+?)/$ games/consoles.php?console=$1&page=$2 

La première règle fonctionne très bien, mais la seconde est de retour consoles.php $ 1 au lieu de xbox

Répondre

0
RewriteRule games/([A-Za-z0-9]+)/?$ games/consoles.php?console=$1 
RewriteRule games/([A-Za-z0-9]+)/([0-9]+)/?$ games/consoles.php?console=$1&page=$2 

L'utilisation (.*?) correspondrait à même le caractère / si xbox/2 est traité dans son ensemble

0

Essayez quelque chose comme:

RewriteRule games/([^/]+)/([^/]+)/?$ games/consoles.php?console=$1&page=$2 [L] 
RewriteRule games/([^/]+)/?$ games/consoles.php?console=$1 [L] 

Je commence par mettre votre règle la plus spécifique en premier - de cette façon, vous ne faites pas de correspondance générale, puis une correspondance plus spécifique plus tard altère cette réécriture générale.

J'ai également spécifié le drapeau [L] pour indiquer que vous voulez que le moteur arrête de rechercher d'autres correspondances à ce stade. Le réordonnancement des règles est redondant dans ce cas en raison du drapeau [L], mais c'est une bonne pratique à suivre.

J'ai également modifié légèrement les expressions. Plutôt que d'utiliser ([A-Za-z0-9]+) comme l'a dit l'affiche précédente, je l'ai changé en ([^/]+) parce que cela va correspondre à tout sauf à un slash, donc vous pouvez avoir des noms de console ou de jeu bizarres. Si vous voulez le rendre plus spécifique, n'hésitez pas à le faire, mais de cette façon vous donnez le cas d'utilisation le plus général.