Не так давно пришлось столкнуться с задачей настройки 301 редиректа с одного домена на другой.
Обычное правило не сработало. 301 редирект выполнялся, только при переходе на новый домен, к концу ссылки добавлялся знак вопроса «?», после чего шел кусок ссылки со старого домена.
Исходный код:
RewriteCond %{HTTP_HOST} /ru/equipment/other_equipment/Dix-AutoGramm [NC]
RewriteRule ^(.*)$ https://sitenew.ua/product/dix-autogrommets.html/$1 [R=301,L]
Результат:
https://site-new.ua/product/dix-autogrommets.html?ru/equipment/other_equipment/Dix-AutoGramm
В итоге сработало такое правило:
RewriteRule ^(.*)ru/equipment/other_equipment/Dix-AutoGramm$ https://sitenew.ua/product/dix-autogrommets.html [R=301,L]
Расшифровка кода:
^ – анкор, означет начало строки;
(.*) – это регулярное выражение модуля mod_rewrite apache означающее любую последовательность символов;
$ – Этот символ обозначает конец строки;
[R=301,L] – флаги;
R – редирект;
301 – код редиректа который необходимо получить;
L – дает команду остановить выполнение правил в этом цикле.