Переадресация .htaccess со строкой запроса на новую структуру сайта - PullRequest
1 голос
/ 21 мая 2019

Я изменил структуру URL-адреса веб-сайта и хочу перенаправить своих пользователей.

Необходимо перенаправить с:

https://example.com/find?q=batman

На

https://example.com/search?query=batman

, где"Бэтмен" - это поисковая фраза .

Проблема для меня в том, как изменить

q до query после ?

Что-то в этом роде, не работает

RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L]

1 Ответ

1 голос
/ 22 мая 2019

Шаблон RewriteRule соответствует только URL-пути - это, в частности, исключает строку запроса.

Вместо этого вам нужно использовать директиву RewriteCond для проверки QUERY_STRING переменная сервера и захват остатка строки запроса после q=.

Например:

RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule ^find$ /search?query=%1 [R=302,L]

%1 - это обратная ссылка на захваченную группу в последнем сопоставленном CondPattern .то есть.(.*) - значение параметра URL q и оставшейся части строки запроса.

Измените перенаправление 302 (временное) на 301 (постоянное) только после того, как подтвердите, что оно работает нормально - во избежаниевопросы кеширования.

...