2010-10-28 97 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] 

我有這樣的重寫規則,而這個網址:http://site/oferte-cel-mai-bun-pret-vile-1-etaj-vanzare/bucuresti/pagina-2/重寫規則問題

所有的參數都是關於網頁OK,直到最後一節,我收到:

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 - 我想在這裏只返回頁碼如果isset在網址..如果不是返回它空白..

問題在這裏.. & pagina = $ 9:我不能把10美元作爲參數?超過9 ...?

回答

2

您不需要對模式中的每個單個原子進行分組。例如,(-(([0-9+])-([a-z-+]+)+))?大概可以降低到(-([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] 

有了這個,你可以減少12組剛剛9

如果你使用的是Apache 2,您可以使用非捕獲組(?:…)代替正常組(…)。非caputring組的匹配不能被引用。因此,請使用普通組爲所有您想要參考的內容,並將非捕獲組用於其他事情:

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

感謝Gumbo。效果很好。 – someone 2010-10-28 12:11:13

0

pagina=$10而不是pagina=$9