2015-04-08 4 views
0

Я пытаюсь заменить строку в URL-адресе htaccess RewriteRule. Идея состоит в том, чтобы поймать каждый запрос, начинающийся с prodotti, заменить его на products и оставить все остальное. НапримерЗаменить строку htaccess RewriteRule

  1. prodotti/category/id.html становится products/category/id.html
  2. prodotti/category.html становится products/category.html
  3. prodotti.html становится products.html

Я попробовал следующее правило

RewriteRule ^prodotti products [QSA,NC] 

(я Опуская L флаг, потому что после этой замены мне нужно сделать еще RewriteRules).

Правило отлично работает для всего, кроме замены # 3 (оно не соответствует). Как я могу изменить его для соответствия всем заменам одной линией RewriteRule?

EDIT

Вот список дальнейшего RewriteRules мне нужно выполнить после замены.

# products/category/id.html 
RewriteRule ^products/([^/]+)/([^/]+)\.html$ mvc.php?rt=products/index&category=$1&id=$2 [L,QSA,NC] 

# products/category.html 
RewriteRule ^products/([^/]+)\.html$ mvc.php?rt=products/index&category=$1 [L,QSA,NC] 
+0

Пробовали ли вы 'RewriteRule Prodotti \ ш * (. *?) ((Выпускаемой продукции \ ш *))? (\ .. *) продукты $ 1products $ 3 $ 4 [QSA, NC] '? Он будет обрабатывать URL-адреса с 2 'prodotti' в них. 'http: // example.com/prodotti/prodottiID.html' ->' http: // example.com/products/productsID.html'. –

ответ

0
RewriteRule ^prodotti(.*)$ products$1 [QSA,NC] 
+0

Спасибо за ответ. Пожалуйста, см. Мое редактирование, я добавил дополнительные RewriteRules, которые мне нужно выполнить после замены. К сожалению, ваше решение, похоже, не работает для правила 'prodotti/categoryID.html' (я ожидал получить« category = categoryID », но я получаю' category = categoryID.html'). Аналогичное рассмотрение может быть сделано для URL-адреса 'prodotti/categoryID/productID.html'. – Giorgio

0

Попробуйте

RewriteRule ^prodotti\.html$ /products.html [QSA,NC,L] 
+0

Да, это правильно, но я хотел бы сопоставить все с одним «RewriteRule». Спасибо в любом случае за ответ. – Giorgio