.htaccess
Problème :
Que faire si on a plus que 9 arguments à gérer dans une règle de réécriture ?
Solution :
On peut utiliser l’instruction RewriteMap avec le paramètre prg, qui lui apelle un script Perl.
Exemple :
Contenu du fichier .htaccess :
RewriteMap manyargs prg:/home/projet/splitargs.pl
RewriteEngine On
RewriteRule ^/blog/(.*)$ /blog.php?$(manyargs:$1) [PT]
Contenu du fichier splitargs.pl :
#!/usr/bin/perl
$|=1
my $i=0;
my @args = split !/!, $_;
foreach my $args (@args) {
$i++;
$return .= "&arg$i=$arg";
}
$return =~ s/^&//;
print $return
Discussion :
Cette règle permettra un nombre indéfini d’arguments d’apparaître dans l’URL et générera une requête avec ces arguments nommés séquentiellement.
Cela peut s’avérer très utile dans le cas ou on a plus de 9 arguments à traiter. Le traitement des expressions régulières dans mod_rewrite est limité à 9 arguments tout simplement parce que le 10e argument ($10) serait indifférentiable du 1er ($1) suivi d’un « 0″.
Je trouve étrange qu’on soit limité de la sorte… selon moi il aurait pu y avoir un moyen d’échapper les arguments à 2 chiffres. Mais bon, avec l’instruction RewriteMap et un simple script Perl, il est possible de pallier cette limitation!