2009-08-28 9 views
0

Je veux créer un chemin de catégorie avec pagination. Les URL seraient comme suit;Mod-Rewrite Question

Tous les chemins doivent travailler avec ou sans slash (si possible)

/category/entertainment-and-music/ 

/category/entertainment-and-music/music/ 

(représente la catégorie "sous divertissement et de la musique" "musique")

/category/entertainment-and-music/5/ 

(représente 5 page pour "ent. et musique")

/category/entertainment-and-music/music/5/ 

(représente la cinquième page pour "ent. et musique/musique ")

j'ai essayé quelque chose comme ça, mais ne fonctionne pas

RewriteRule ^category/(.*)/? /category.php?slug=$1&page=1 
RewriteRule ^category/(.*)/(.*)/? /category.php?slug=$1&page=$2 

Comment puis-je faire quelque chose de flexible comme ça?

Merci à l'avance ...

Répondre

2
RewriteRule ^category/([A-Za-z0-9_-]+)([/]?)$ /category.php?slug=$1&page=1 
RewriteRule ^category/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&page=$2 
RewriteRule ^category/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&subcat=$2&page=$3 

La première règle devrait couvrir les cas où ils spécifient simplement une catégorie.

La deuxième règle devrait couvrir la catégorie avec une page fournie.

La troisième règle devrait couvrir la catégorie, la sous-catégorie et la page. Je n'étais pas vraiment clair sur la façon dont vous vouliez peupler la sous-catégorie, donc je l'ai juste écrit comme un autre argument après slug.

Tous permettent un slash final facultatif.

1

Il semblerait que votre première regex corresponde également à tout ce qui pourrait être détecté par votre seconde./catégorie/slugname/7/correspondrait à la *, avec 1 $ réglé sur "slugname/7"

Essayez quelque chose comme ceci:.

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1 
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2 

Au moins, ou resserrer vos matchs un peu, comme ceci:

RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1 
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2 

cela contraindrait vos limaces pour être au moins un caractère alphanumérique, ce qui permet « _ » et « - » ainsi, et vos numéros de page devraient être, eh bien, les numéros.

+0

Merci beaucoup mais malheureusement ne fonctionne pas, il ne restitue que la première partie de limace, "divertissement et musique". Aucune sous-catégorie ou numéro de page ... –

+0

Deux possibilités: D'abord, les expressions rationnelles devraient avoir un '$' à la fin de celles-ci (après le?), De sorte que la chaîne doit se terminer à ce point - sinon, La première regex correspond toujours à tout. Deuxièmement, si cela ne fonctionne pas, essayez de changer l'ordre des deux règles, de sorte que la règle la plus spécifique corresponde d'abord. –

+0

J'ai essayé mais ne fonctionne toujours pas :(N'obtient pas de sous-catégorie ... –