Шаблон RewriteRule
соответствует только URL-пути - это, в частности, исключает строку запроса.
Вместо этого вам нужно использовать директиву RewriteCond
для проверки QUERY_STRING
переменная сервера и захват остатка строки запроса после q=
.
Например:
RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule ^find$ /search?query=%1 [R=302,L]
%1
- это обратная ссылка на захваченную группу в последнем сопоставленном CondPattern .то есть.(.*)
- значение параметра URL q
и оставшейся части строки запроса.
Измените перенаправление 302 (временное) на 301 (постоянное) только после того, как подтвердите, что оно работает нормально - во избежаниевопросы кеширования.