2014-10-04 2 views
2

Я пытаюсь обрабатывать URL-адрес с помощью параметра htaccess и% {REQUEST_URI}. Я много исследовал, использую htaccess.madewithlove.be и виртуальную машину для создания правила и тестирования без успеха.Сложно изменить и отделить REQUEST_URI с htaccess

Запрос URL является:

1) www.example.com.br/category/product/Beer?id=16

пример соседний запрошенный URL для лучшего понимания:

2) www.example.com.br/category/product/Wine?id=33

Правило Я создал это:

RewriteCond %{HTTP_HOST} ^(.*)example\.com\.br$ 
RewriteCond %{REQUEST_URI} ^(.*)category/product/(.*)$ 
RewriteRule ^(.*)$ http://www.mynewsite.com.br/category/product/luxe-product/$1? [R=301,L] 

Ожидаемым переписывают являются:

1) www.mynewsite.com.br/category/product/luxe-product/Beer

2) www.mynewsite.com.br/category/product/luxe-product/Wine

Но, используя это правило вывода URL являются:

1) www.mynewsite.com.br/category/product/luxe-product/category/product/Beer

2) www.mynewsite.com.br/category/product/luxe-product/category/product/Wine

В этом случае я упростил работу с категорией/продуктом на выходе, так как я не мог отделяться с помощью директив $ 0, $ 1 и $ 2. У кого-нибудь есть идея, как это решить?

С уважением,

ответ

0

Вам не нужно условие на REQUEST_URI, так как вы можете сопоставить его в RewriteRule.

Вместо этого, вы можете использовать это правило

RewriteCond %{HTTP_HOST} example\.com\.br$ [NC] 
RewriteRule ^category/product/([^/]+)$ http://www.mynewsite.com.br/category/product/luxe-product/$1? [R=301,L] 

Или вы могли бы использовать REQUEST_URI как вы сделали (оба правильны)

RewriteCond %{HTTP_HOST} example\.com\.br$ [NC] 
RewriteCond %{REQUEST_URI} ^/category/product/([^/]+)$ [NC] 
RewriteRule^http://www.mynewsite.com.br/category/product/luxe-product/%1? [R=301,L] 
+0

работал! У меня есть сомнения, моя ошибка заключалась в использовании (. *) В RewriteRule, верно ?. Я еще не понимаю эту часть правил. Мне нужно учиться больше. Можете ли вы предложить хороший учебник? Спасибо и всего наилучшего. – Folley