2017-09-22 1 views
1

J'essaye de mettre en place quelques règles de réécriture simples mais n'importe quelle URL que j'entre dans le premier passe à la première fois.Les règles de réécriture de .htaccess ne fonctionnent pas correctement

RewriteRule ^categories/(.*/)?([0-9]+)?/$ categories.php?category_id=$2 [QSA,NC,L] 

RewriteRule ^categories/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/$ sub-categories.php?category_id=$3 [QSA,NC,L] 

RewriteRule ^categories/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/(.*/)?([0-9]+)?/$ product.php?product_id=$4 [QSA,NC,L] 

Je veux essentiellement:

domain.co.uk/categories/category-name/1/ aller à categories.php domain.co.uk/categories/category-name/sub- nom de la catégorie/1/aller à sous-catégories.php domain.co.uk/categories/category/sub-category-name/product-name/1/ aller à products.php

Le 1 à la fin de chaque URL sera un ID pour la catégorie ou le produit.

Toute aide sera appréciée.

+0

Ceux-ci semblent comme ils avaient tous les échantillons correspondent données, 'catégories/[^ /] +/(\ d)/$ | catégories/[^ /] +/([AZ- ] +)/(\ d)/$ | catégories/[^ /] +/[az -] +/([az -] +)/(\ d)/$ '. – chris85

Répondre

1

Vous avez tous les groupes capturés comme facultatifs dans vos règles. Avoir cette façon:

RewriteRule ^categories/[\w-]+/(\d+)/?$ categories.php?category_id=$1 [QSA,NC,L] 

RewriteRule ^categories/[\w-]+/[\w-]+/(\d+)/?$ sub-categories.php?category_id=$1 [QSA,NC,L] 

RewriteRule ^categories/[\w-]+/[\w-]+/[\w-]+/(\d+)/?$ product.php?product_id=$1 [QSA,NC,L] 
+1

Cela a fonctionné parfaitement. Merci – user3068032