У меня есть следующие критерии
Если строка запроса соответствует тексту Microwave_Ovens
, мне нужно заменить его на Microwave-Ovens
(заменить подчеркивание дефисом) в URI запроса.
Он работает, как ожидалось, для первого набора из 3 строк, упомянутых ниже. На самом деле мне нужно сделать то же самое для некоторых других типов (предположим, Vacuum_Cleaners
) тоже то же самое. Я добавил второй набор из 3 строк, но он не работает. Все, что я укажу первым, работает только.
Мои условия и правила перезаписи следующие:
RewriteCond %{QUERY_STRING} ^(.*)Microwave_Ovens(.*)$
RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Microwave-Ovens%2 [R=301,L]
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
RewriteCond %{QUERY_STRING} ^(.*)Vacuum_Cleaners(.*)$
RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Vacuum-Cleaners%2 [R=301,L]
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
Кто-нибудь может предложить мне, что я здесь делаю не так
RewriteCond% {QUERY_STRING} ^ (. *) Microwave_Ovens (. * ) $ RewriteRule ^ ([^ _] *) _ + ([^ _] *) $ / Mr10q / $ 1- $ 2?% 1Микроволновые печи% 2 [R = 301, L] RewriteRule ^ ([^ _] *) _ + (. *) $ $ 1- $ 2 [N, DPI]
Кажется, ваши правила намного больше, чем вы указали в вопросе? Но главная проблема здесь, казалось бы, заключается во второй директиве RewriteRule
. Предыдущая директива RewriteCond
применяется только к первой директиве RewriteRule
. Итак, второе RewriteRule
будет выполняться безоговорочно и перехватить любой запрос, который может содержать Vacuum_Cleaners
.
Поскольку вы продублировали эту директиву во втором блоке правил, возможно, просто удалите первую одного будет достаточно. Например:
# 1
RewriteCond %{QUERY_STRING} ^(.*)Microwave_Ovens(.*)$
RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Microwave-Ovens%2 [R=301,L]
# 2
RewriteCond %{QUERY_STRING} ^(.*)Vacuum_Cleaners(.*)$
RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Vacuum-Cleaners%2 [R=301,L]
# 3
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]