重写规则问题 [英] RewriteRule question
问题描述
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://网站/ oferte-CEL-麦bun- preT-卑鄙-1-etaj-vanzare /布加勒斯特/ pagina-2 /
所有的参数都是关于页确定,直到最后一节,我收到:
All parameters are ok untill last one about page, i receive:
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] => /pagina-2
- i want here to return only page number if isset in url.. if not to return it blank..
但问题是这里..&放大器; pagina = $ 9:|我不能老是把$ 10作为参数?超过9 ...?
Problem is here .. &pagina=$9 :| I can`t put $10 as a parameter? more than 9... ?
推荐答案
您不必组中的图形的每一个原子。例如,( - (([0-9 +) - ([AZ - +] +)+))?
大概可以降低到( - ([0-9 +) - ([AZ - +] +))
:
You don’t need to group every single atom in your pattern. For example, (-(([0-9+])-([a-z-+]+)+))?
can probably be reduced to (-([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。
With this you can reduce 12 groups to just 9.
如果你使用的是Apache 2,你可以使用非捕获组(?:...)
而不是正常组(...)
。非caputring组的匹配不能被引用。所以,使用您希望能够参考和使用非捕获组的一切一切正常组:
And if you are using Apache 2, you can use non-capturing groups (?:…)
instead of normal groups (…)
. The matches of non-caputring groups cannot be referenced. So use normal groups for everything that you want to be able reference and use non-capturing groups for everything else:
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]
这篇关于重写规则问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!