2015-09-08 4 views
1

ошибка в моем онлайн-каталоге Создание URL-адреса SEF создало ситуацию, когда в URL дважды добавляется клонирование категории. Чтобы исправить это, я хотел бы использовать .htaccess, чтобы удалить эту часть URL-адреса и переместить весь URL-адрес на один уровень, включая URL-адреса, которые также включают продукт под ними..htaccess удалить дублируемую часть URL-адреса

дубликат вхождения в подкатегории painting-tools в категории tools

так неправильный URL выглядит следующим образом: /магазин/пункты/каталог/инструменты/покраска-инструментов/Живопись-инструменты или /магазин/изделия/Каталог/инструмент/живопись-инструменты/живопись-инструменты/{некоторый продукт}

вместо того, чтобы быть правильным URL, как это:

/store/items/catalog/tools/painting-tools 

или /магазин/предметы/Каталог/Инструмент/Живопись-инструменты/{некоторого продукт}

и адрес

/store/items/catalog/tools/painting-tools/ 

или /магазин/изделие/Каталог/Инструмент/Живопись-инструменты/{ некоторый продукт}

на самом деле должно быть, как это

/store/items/catalog/tools 

или /магазин/предметы/каталог/инструменты/{некоторый продукт}

пытались использовать это правило, но ее не работает

RewriteRule ^/painting-tools/painting-tools/(.*) /painting-tools/$1 [QSA] 

я думаю^часть не является правильным, так как его не начало URL. Как я могу это исправить? благодаря

+0

Где находится ваш htaccess? в корне или в подпапках? – starkeen

+0

@starkeen - в корне – buzibuzi

ответ

2

Вы можете использовать эту обратную ссылку на основе правила переадресации, как первого правила в ваш .htaccess:

RewriteRule ^(.+?/([^/]+))/\2(/.*)?$ $1/$3 [NE,L,R=302] 

RewriteRule ^(.+?/tools)/painting-tools(?:/.*)?$ $1/ [L,NC,R=302] 

Это захватывает повторное значение после начальной части и группируя ее в этом суб-шаблон ([^/]+). Позже в регулярном выражении используется обратная ссылка \2, чтобы убедиться, что одно и то же зафиксированное значение повторяется.

Убедитесь, что надлежащее RewriteBase определено либо / или /store/, где ваш Htaccess находится.


Update: Согласно обсуждения ниже:

RewriteRule ^(.+?/tools)/painting-tools2(/.*)?$ $1$2 [L,NC,R=302] 

Это удалит /painting-tools2 из URL.

+0

Привет, @anubhava, спасибо, это работает, но частично.он не делает каталог: /store/items/catalog/tools/paint-tools/paint-tools в /store/items/catalog/tools/paint-tools – buzibuzi

+0

Извините @anubhanva, ваше решение работает, но я добавил еще одно требование для/store/items/catalog/tools/paint-tools (и что-нибудь под ним) следует здесь /store/items/catalog/tools/ – buzibuzi

+0

проблема есть,/магазин/предметы/каталог/инструменты/живопись инструменты/живопись инструменты сейчас идет здесь: /store/items/catalog/tools/ Я хочу, чтобы он здесь/магазин/предметы/каталог/инструменты/инструменты для рисования – buzibuzi

Смежные вопросы