Как правильно прописать правило RewriteRule для такого условия?

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2015

Есть ulr вида site.ru/tovar/semena-ovoschey/semena-arbuza/vostochnyj-ornament. Как мне правильно прописать правило RewriteRule, чтобы получить site.ru/semena-ovoschey/semena-arbuza/vostochnyj-ornament?

Категории отображаются вот так: site.ru/category/semena-cvetov. Нужно получить site.ru/semena-cvetov, т.е. удалить category.

Вот файл .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{REQUEST_URI} !^category.*$ 
RewriteCond %{REQUEST_URI} ^tovar/(.*)$ 
RewriteRule ^tovar/(.*)$ $1 [R=301,L]

RewriteCond %{REQUEST_URI} !^tovar.*$ 
RewriteCond %{REQUEST_URI} ^category/(.*)$ 
RewriteRule ^category/(.*)$ $1 [R=301,L]
</IfModule>

Но правила не срабатывают, почему? Как их исправить на правильные?

Ответы

▲ 1Принят
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /

   RewriteRule ^(?:tovar|category)/(.*)$ /$1 [R=301, L]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.php [L]
</IfModule>

Проверять здесь