2010-07-08 8 views
0
RewriteRule ^foo-bar-([0-9]+)-([a-z]+)-([a-z-+]+)/$ index.php?a[]=&b=$1&c=$2&d=$3&e=$4&f=$5 [L,NC] 

comment pourrais-je mettre le dernier paramètre de la règle pour ne pas être nécessaire sans ajouter deux lignes et dans le premier pour l'enlever, puis dans la seconde pour rester ..?RewriteRule question

donc, la règle d'être dans une ligne, mais d'avoir deux options à acees url comme:

/foo-bar-2-steps/ 

/foo-bar-2-steps-eq/ 

Répondre

3

une des options suivantes:

  • Utiliser deux règles de réécriture, un pour chaque cas
  • Mettez un point d'interrogation après la partie optionnelle, comme ceci:

foo-bar-([a-z]+)(-([a-z]+))?

Ici, le deuxième paramètre est facultatif. Notez que cela modifie vos index numériques, puisque vous utilisez des parenthèses supplémentaires.

+0

Merci Sjoerd, ça marche. Maintenant, j'ai une autre question: Comment pourrais-je faire une variable htaccess utiliser alors dans toute RewriteRule comme: RewriteRule^(sone | autre | etc) .... RewriteRule^(sone | autre | etc) .... être: setenv var (sone | autre | etc) RewriteRule^(env: var) .... Chaque – oriceon

+0

() définit une variable. Vous pouvez accéder au premier() de 1 $, le second de 2 $, ... – JochenJung

+0

Je le sais. Il y avait un autre pense. Je veux définir une variable dans .htaccess puis l'utiliser dans tout mon RewriteRule pour ne pas répéter un code à chaque fois .. Si je veux changer une option de cette variable .. pour le faire rapidement. – oriceon