RewriteRule вопрос - PullRequest
       1

RewriteRule вопрос

0 голосов
/ 28 октября 2010
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]

У меня есть этот RewriteRule и этот URL: http://site/oferte-cel-mai-bun-pret-vile-1-etaj-vanzare/bucuresti/pagina-2/

Все параметры в порядке до последней страницы, я получаю:

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 - я хочу, чтобы здесь возвращался только номер страницы, если он указан в URL-адресе ... если не возвращен пустой.

Проблема здесь .. & pagina = $ 9: | Я не могу поставить $ 10 в качестве параметра? более 9 ...?

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Вам не нужно группировать каждый атом в вашем шаблоне. Например, (-(([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, вы можете использовать группы без захвата (?:…) вместо обычных групп (…). Совпадения некапутрирующих групп нельзя ссылать. Поэтому используйте обычные группы для всего, на что вы хотите ссылаться, и используйте группы без захвата для всего остального:

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 голосов
/ 28 октября 2010

pagina=$10 вместо pagina=$9?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...