Проблема с многократной перезаписью htaccess rules

У меня есть следующие критерии

Если строка запроса соответствует тексту 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]

Кто-нибудь может предложить мне, что я здесь делаю не так

1
задан 20 April 2017 в 21:15
1 ответ
 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]
0
ответ дан 4 December 2019 в 04:59

Теги

Похожие вопросы