2017-09-20 1 views
0

Je suis en train de créer une API reste qui acceptera nombre de paramètres comme url segmentéeURL Rewriting Règles htaccess - Apache

C'est ma règle actuelle de réécriture, ce qui fonctionne très bien, mais ne gère qu'un seul segmentée variable.Here un seul identifiant de catégorie d'article arrive dans le segment.

 ^products/categories/([0-9]+)/?$ products.php?category_id=$1 [NC,L] 
    products/categories/?category_id=10 

Que Iam essayant de faire est, je passerai une autre id comme brand_id et la couleur url id comme segmentée comme celui-ci

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

et attend l'URL à réécrire comme suit

products/categories/?category_id=10&brand_id=5&color_id=7. 

La réécriture ci-dessus fonctionne bien si et seulement si j'ai fourni tous les 3 identifiants et il échoue si je manque un des id. Dans mon cas, seul l'identifiant de catégorie est obligatoire pour la requête et tous les autres éléments sont facultatifs. Comment est-ce que je peux changer l'URL de réécriture ici pour faire les deuxième et troisième variables comme article facultatif?

Merci

+2

vous êtes essentiellement là - en supposant que l'ordre de la marque et la couleur est toujours constante - vous avez juste besoin rendre les barres obliques facultatives - par ex. : '^ products/categories/([0-9] +) /? ([0-9] *) /? ([0-9] *) /? $ products.php? category_id = $ 1 & brand_id = $ 2 & color_id = $ 3' – CD001

+0

Oui .. ça a marché. Merci CD001. Même je cherchais une règle qui rendrait les deuxième et troisième paramètres optionnels. –

Répondre

0

Voir l'exemple ci-dessous

Votre URL http://test.com/products/categories/10/5/7

HTACCESS

RewriteRule^produits/catégories/([0-9] +)/([0-9 ] )/([0-9])? $ Index.php? Category_id = $ 1 & brand_id = $ 2 & color_id = $ 3 [L, QSA]

vous pouvez obtenir tous les 3 paramètres

Si vous voulez créer règle dynamique pour les paramètres puis vérifiez ci-dessous

Pour les paramètres individuels (category_id)

RewriteRule^produits/catégories/([ 0-9] +)? $ index.php? category_id = $ 1 [L, QSA]

Pour deux paramètres (category_id et brand_id)

RewriteRule^produits/catégories/([0-9] +)/([0-9] *)? $ Index.php? Category_id = 1 & $ brand_id = 2 $ [L, QSA]

Pour trois paramètres (category_id, brand_id et color_id)

RewriteRule^produits/catégories/([0-9] +)/([0-9] )/([0-9])? $ index. ? php category_id = 1 & $ brand_id = 2 & $ color_id = $ sur 3 [l, QSA]