Условное переписывание Apache - PullRequest
0 голосов
/ 22 октября 2018

У меня есть несколько URL-путей в виде:

/cat/_CNAME_(/_SUB_(/_SUB_))(/_ATR_/_ATRVAL_(/_ATR_/ATRVAL_))(/page/_PNUM_)

, которые необходимо преобразовать в:

/cat/_CNAME_(/_SUB_(/_SUB_))(/page/_PNUM_)?(_ATR_=_ATRVAL_(&_ATR_=_ATRVAL_))

Некоторые пояснения:

  • CNAME , SUB , ATR , ATRVAL & PNUM являются динамическими
  • SUB , ATR => ATRVAL , page => PNUM являются необязательными, оставляя CNAME как единственный обязательный термин вURL-путь
  • SUB и ATR => ATRVAL может присутствовать несколько раз
  • Единственный способ отделить SUB из ATR => ATRVAL означает, что имя ATR всегда начинается с 'attr_' или 'prod_', в то время как другие термины не будут иметьэтот префикс

Это означает, что следует преобразовать следующие пути:

this

/cat/magazines/lifestyle/attr_shape/portrait/prod_cat/lifestyle/

в

/cat/magazines/lifestyle/?attr_shape=portrait&prod_cat=lifestyle

this

/cat/magazines/attr_shape/landscape/page/5/

до

/cat/magazines/page/5?attr_shape=landscape

это

/cat/magazines/lifestyle/attr_shape/square/attr_size/20x20/page/2

до

/cat/magazines/lifestyle/page/2?attr_shape=square&attr_size=20x20
...