2010-10-28 7 views
0
RewriteRule oferte-cel-mai-bun-pret(-(apartamente|garsoniere|case|vile|birouri|spatii-comerciale|spatii-industriale|mini-hoteluri-pensiuni|ferme|proprietati-speciale|terenuri-intravilane|terenuri-extravilane))?(-(([0-9+])-([a-z-+]+)+))?-(vanzare|inchiriere)/([a-z-+]+)(/pagina-(([0-9]+)+))?(/)?$ index.php?seo[]=anunturi&tip_categorie=$2&nr=$5&tip_numar=$6&cmbp_$7=1&tip_cautare=$7&judet=$8&pagina=$9 [L,QSA] 

Je cette RewriteRule, et cette url: http://site/oferte-cel-mai-bun-pret-vile-1-etaj-vanzare/bucuresti/pagina-2/RewriteRule question

Tous les paramètres sont ok jusqu'à ce dernier à propos de la page, je reçois:

Array 
(
    [seo] => Array 
     (
      [0] => anunturi 
     ) 

    [tip_categorie] => vile 
    [nr] => 1 
    [tip_numar] => etaj 
    [cmbp_vanzare] => 1 
    [tip_cautare] => vanzare 
    [judet] => bucuresti 
    [pagina] => /pagina-2 
) 

[pagina] => /pagina-2 - je veux ici pour revenir seulement numéro de page si isset dans url .. si ne pas le retourner vide ..

Problème est ici .. & pagina = $ 9: | Je ne peux pas mettre 10 $ comme paramètre? plus de 9 ...?

Répondre

2

Vous n'avez pas besoin de regrouper tous les atomes de votre modèle. Par exemple, (-(([0-9+])-([a-z-+]+)+))? peut probablement être réduit à (-([0-9+])-([a-z-+]+))?:

RewriteRule\ 
    ^oferte-cel-mai-bun-pret(-(apartamente|garsoniere|case|vile|birouri|spatii-comerciale|spatii-industriale|mini-hoteluri-pensiuni|ferme|proprietati-speciale|terenuri-intravilane|terenuri-extravilane))?(-([0-9+])-([a-z-+]+))?-(vanzare|inchiriere)/([a-z-+]+)(/pagina-([0-9]+))?/?$\ 
    index.php?seo[]=anunturi&tip_categorie=$2&nr=$4&tip_numar=$5&cmbp_$6=1&tip_cautare=$6&judet=$7&pagina=$9 [L,QSA] 

Avec cela, vous pouvez réduire de 12 groupes à seulement 9.

Et si vous utilisez Apache 2, vous pouvez utiliser des groupes non-capture (?:…) au lieu des groupes normaux (…). Les correspondances des groupes non caputring ne peuvent pas être référencées. Utilisez donc des groupes normaux pour tout ce que vous voulez pouvoir référencer et utilisez des groupes non-capturants pour tout le reste:

RewriteRule\ 
    ^oferte-cel-mai-bun-pret(?:-(apartamente|garsoniere|case|vile|birouri|spatii-comerciale|spatii-industriale|mini-hoteluri-pensiuni|ferme|proprietati-speciale|terenuri-intravilane|terenuri-extravilane))?(?:-([0-9+])-([a-z-+]+))?-(vanzare|inchiriere)/([a-z-+]+)(?:/pagina-([0-9]+))?/?$\ 
    index.php?seo[]=anunturi&tip_categorie=$1&nr=$2&tip_numar=$3&cmbp_$4=1&tip_cautare=$4&judet=$5&pagina=$6 [L,QSA] 
+0

Merci Gumbo. Fonctionne bien. – someone

0

pagina=$10 au lieu de pagina=$9?