Lighttpd et URL Rewriting

WRInaute occasionnel
Bonsoir,

je suis en train de tester Lighttpd, mais impossible de faire marcher l'url rewriting.

ex : www.monsite.com/index-id-5-action-ajout.php
<--> www.monsite.com/index.php?id=5&action=ajout

Dans mon ancien fichier htaccess d'apache :

Code:
RewriteEngine On
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.php $1$2&$3=$4$5\.php [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.php $1.php?$2=$3$4 [L]
RewriteRule ^(.*).php $1.php [L]

Dans lighttpd.conf :

Code:
url.rewrite = ("(.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.php" => "$1$2&$3=$4$5\.php [N]",
               "(.*)-([^-]+)-([^-]*)(.*)\.php" => "$1.php?$2=$3$4 [L]",
               "^(.*).php" => "$1.php [N]")

Evidemment cela ne marche pas (erreur 404)... Si quelqu'un peux m'aider, je n'ai rien trouvé comme exemple (lighty est peu documenté)

Merci
 
WRInaute passionné
Passer d'une syntaxe à une autre en informatique, c'est comme passer d'une langue à une autre, si tu fait du mot a mot, c'est du petit négre ! Il faut repenser ton probléme à partir du besoin et oublier la syntaxe apache:


Code:
ex : www.monsite.com/index-id-5-action-ajout.php 
<--> www.monsite.com/index.php?id=5&action=ajout 

url.rewrite  = ( "^/(.*)-(.*)-(.*)-(.*)-(.*)\.php$" => "/$1.php?$2=$3&$4=$5" )

cela devrait marcher :wink:
 
WRInaute discret
Le problème est peut-être que le .* prend également les tirets que tu utilises pour délimiter tes arguments et fait donc tout foirer...

Auquel cas tu devrais remplacer tes .* par des classes de caractères qui sont, de plus, bien plus rapides que des .*
 
WRInaute discret
Au lieu de mettre .*, qui désigne n'importe quel caractère, utilise plutôt des classes qu'on exprime entre crochets.

Par exemple, avec [a-zA-Z0-9_], tu désignes toutes les lettres ( maj / min ), tous les chiffres et aussi l'underscore.

Pour faire plus court tu peux remplacer a-zA-Z par \w et 0-9 par \d, c'est pareil.

Dans cette combinaison, le tiret est exclu, ce qui est une bonne chose puisque tu l'utilises comme séparateur. Le prob vient peut-être pas de là mais ce sera toujours une bonne chose de faite ;)

Edit
Un site bien utile sur les regexp :
http://www.expreg.com
 
WRInaute occasionnel
problème résolu, merci à vous

Code:
url.rewrite = ( "^/([a-z_]+)-([a-z_]+)-([a-z0-9]+)\.php$" => "/$1.php?$2=$3" )
 
Discussions similaires
Haut