Problème avec l'url rewriting

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec l'url rewriting

par Ripat » 22 mars 2007, 09:52

Effectivement, les références arrières sont limitées à 9 pour l'URL rewriting. Ceci dit, je ne vois que 12 parenthèses capturantes dans ton motif alors que tu appelles une référence arrière $13. Mais de toutes les façons 12, c'est déjà trop.

Tu peux contourner le problème en supprimant les alternatives (....)? et en filtrant les différentes formes possibles de ton URI avec des conditions.

Code : Tout sélectionner

# premier filtre pour URI du type complet news-1-2-3-p2-xxxasc-toto.html RewriteCond %{REQUEST_URI} ^[a-z_]+-[0-9]+-[0-9]+-[0-9]+-p[0-9]+-[a-z-_]*asc|desc-[a-z-]*\.html$ RewriteRule ^([a-z_]+)-([0-9]+)-([0-9]+)-([0-9]+)-p([0-9]+)-([a-z-_])*(asc|desc)-[a-z-]*\.html$ index.php?module=$1&action=$2&id1=$3&id2=$4&page=$5&order_by=$6&order=$7 [L,R] # 2ème filtre pour URI partiel news-1-2-3-p2-toto.html RewriteCond %{REQUEST_URI} ^[a-z_]+-[0-9]+-[0-9]+-[0-9]+-p[0-9]+-[a-z-]*\.html$ RewriteRule ^([a-z_]+)-([0-9]+)-([0-9]+)-([0-9]+)-p([0-9]+)-[a-z-]*\.html$ index.php?module=$1&action=$2&id1=$3&id2=$4&page=$5 [L,R] # 3ème filtre pour URI partiel news-1-2-3-toto.html RewriteCond %{REQUEST_URI} ^[a-z_]+-[0-9]+-[0-9]+-[0-9]+-[a-z-]*\.html$ RewriteRule ^([a-z_]+)-([0-9]+)-([0-9]+)-([0-9]+)-[a-z-]*\.html$ index.php?module=$1&action=$2&id1=$3&id2=$4 [L,R] # ainsi de suite...
Pas testé mais ça devrait le faire. Un rappel, pour débugger un rewriting il est toujours utile d'activer la journalisation (un level 5 est suffisant):

Dans le fichier de config d'Apache:

Code : Tout sélectionner

RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 5

Problème avec l'url rewriting

par momox » 22 mars 2007, 00:02

Bonsoir a tous,
avec l'aide d'un ami, j'ai concu une REGEX pour l'url rewriting sur mon site mais j'ai un petit problème.
Avant toute chose, la regex en question:

Code : Tout sélectionner

RewriteRule ^([a-z_]+)(-([0-9]+))?(-([0-9]+))?(-([0-9]+))?(-p([0-9]+))?(-[a-z-_]*)?(asc|desc)?(-[a-z-]*)?\.html index.php?module=$1&action=$3&id1=$5&id2=$7&page=$9&order_by=$11&order=$13 [QSA,L]
Le problème se situe au niveau de $11 et de $13, qui buggent littéralement, ce qui fait qu'en faisant un var dump de $_Get avec l'url http://localhost/news-1-p2.html je me retrouve avec le tableau suivant:

Code : Tout sélectionner

Array ( [module] => news [action] => 1 [id1] => [id2] => [page] => 2 [order_by] => news1 [order] => news3 )
normalement, order_by et order devraient être vides, et au lieu de cela, j'ai droit a news1 et news3...
Apparement, l'url rewriting ne supporte pas les variable dont l'id est supérieur a 9...
Voila donc mon petit problème qui me géne enormément pour mon devellopement en cours... :/
Merci d'avance :)