Je ne pense pas que vous pouvez saisir un nombre arbitraire d'arguments dans une seule regex RewriteRule. Ne serait-il pas plus facile de rediriger vers index.php?version=var-var2-var3
puis en PHP faire un explode()
sur $_POST['version']
?
EDIT: Vous pouvez le faire pour un nombre borné de vars (9 est le maximum capturé sous-groupes je crois), puis supprimez les entrées vides redondantes. Messier alors simple exploser() alternatif à mon avis, mais là, vous allez:
# Convert up to 8 arguments.
RewriteRule ^/([^-]+)-(?:([^-]+)-)?(?:([^-]+)-)?(?:([^-]+)-)?(?:([^-]+)-)?(?:([^-]+)-)?(?:([^-]+)-)?(?:([^-]+)-)?/(.*)$ index.php?t=$9&v[]=$1&v[]=$2&v[]=$3&v[]=$4&v[]=$5&v[]=$6&v[]=$7&v[]=$8
# Strip empty ones.
RewriteRule [?&]v\[\]=$ "" [N]
Vous pouvez également faire une boucle compliquée en déplaçant un var au nouveau format sur chaque course du moteur de réécriture et de continuer la course jusqu'à ce que vous manquiez de vars, mais je pense que c'est plus qu'un moteur de réécriture d'URL devrait être responsable.
EDIT 2: Ok, voici la boucle je l'ai mentionné:
RewriteEngine on
RewriteRule ^(.*)/([^/]+)$ $1&page=$2 [L]
RewriteRule ^([^-]+)-(.*)?$ $2&v[]=$1 [L]
RewriteRule ^(?!index\.php)([^-]+)$ /index.php?v[]=$1 [L]
Il transform un exemple d'URL comme suit:
var1-var2-var3/title <-- Original
var1-var2-var3&page=title
var2-var3&page=title&v[]=var1
var3&page=title&v[]=var1&v[]=var2
index.php?v[]=var3&page=title&v[]=var1&v[]=var2 <-- Final
Ce pourrait être une solution, mais la manipulation dans un RewriteRule serait plus simple. – Daniel
Je cherche quelque chose de plus le long des lignes de ce http://howflow.com/tricks/apache2_mod_rewrite_google_friendly_urls Sauf séparant toutes les variables, sauf le dernier avec « - » au lieu de «/». – Daniel
Ce qui est décrit sur cette page est exactement la "boucle compliquée en déplaçant un var au nouveau format sur chaque course" que j'ai mentionné. Je vais éditer dans une version qui fonctionne pour votre format. –