kiruhakiselev
@kiruhakiselev
Web-программист

Какой есть спецсимвол (оператор) для придания точного соответствия?

Написал такое правило:
RewriteCond %{QUERY_STRING} q=(kupalniki|plyazhnaya-odezhda|beachwear) [NC]
RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]

q - это название странницы.
Дело в том, что условие находит любую строку, в которой есть слово beachwear, т.е. не точное слово. Происходит редирект на beachwear-new и получается бесконечный редирект, вот в чем беда.
Пытался попробовать символы ^ и $, но ничего не получилось.
q=(kupalniki|plyazhnaya-odezhda)|(^beachwear$)

Сильно не ругайте, до этого в htaccess не углублялся, а тут появилась задача. За день почитал про синтаксис и прочее. Гуглил долго, но на такую проблему решения не нашёл.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
1. ответ на ваш ^ - начало/ $ - конец строки
2. вот вам в помощь www.exlab.net/files/tools/sheets/mod_rewrite/mod_r...
Тут конечно не все но большая часть.
3.сделайте так.
RewriteCond %{QUERY_STRING} (^|&)kupalniki($|&) [OR]
RewriteCond %{QUERY_STRING} (^|&)plyazhnaya-odezhda($|&) [OR]
RewriteCond %{QUERY_STRING} (^|&)beachwear($|&)
RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]

Или вообще сделайте по нормальному

RewriteCond %{QUERY_STRING} (^|&)kupalniki($|&) 
RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]

RewriteCond %{QUERY_STRING} (^|&)plyazhnaya-odezhda($|&) 
RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]
...

Так же я добавил условие и или, то есть если этот будет идти не первым и начинаться с &
Если у вас много редиректов а вы плаваете
то воспользуйтесь вот этим отличным сервисом, он на 99% работает корректно
https://www.donatstudios.com/RewriteRule_Generator
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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