Прежде всего я хотел бы извиниться за мой английский.
Я должен сделать серию из 301 переадресации на сайте, где все URL будут изменены.
Примером является следующий
У меня есть URL, который может иметь разные параметры:
Пример 1
www.domain.com/post/?id=specificID&utm_source=val1&utm_campaign=val2&utm_medium=val3
Пример 2
www.domain.com/post/?utm_medium=val3&utm_campaign=val2&utm_source=val1&id=post_slug
Пример 3
www.domain.com/post/?id=specificID&utm_source=val1&utm_campaign=val2
Во всех примерах мне нужно перенаправить на другой URL, сохраняя только параметры 'utm'
Самое важное для этого перенаправления:
- Только параметры «id» и «utm_source» безопасны в исходном URL.
- Параметр id не обязательно должен быть в целевом URL.
URL-адрес назначения в каждом примере должен быть следующим:
Пример 1
www.domain.com/en/specificID/?utm_source=val1&utm_campaign=val2&utm_medium=val3
Пример 2
www.domain.com/en/specificID/?utm_campaign=val2&utm_source=val1&id=post_slug
Пример 3
www.domain.com/en/specificID/?utm_source=val1&utm_campaign=val2
Правило перезаписи, которое у меня есть, это:
RewriteCond% {REQUEST_URI} /post
RewriteCond% {QUERY_STRING} id=lorem-ipsum
RewriteCond% {QUERY_STRING} utm_source
RewriteRule ^ /en/lorem-ipsum [R=301,L,QSA]
Проблема, с которой я сталкиваюсь в этой конфигурации, заключается в том, что параметр id всегда достигает меня по адресу назначения и является обязательным, что не так.
С этим правилом URL назначения:
Пример 1
www.domain.com/en/specificID/?id=specificID&utm_source=val1&utm_campaign=val2&utm_medium=val3
Пример 2
www.domain.com/en/specificID/?utm_medium=val3&utm_campaign=val2&utm_source=val1&id=post_slug
Пример 3
www.domain.com/en/specificID/?id=specificID&utm_source=val1&utm_campaign=val2
Я знаю, что это происходит со мной под флагом QSA, но, честно говоря, я не могу придумать другой способ сделать это.
Короче говоря, проблема в том, что я никогда не знаю, сколько параметров utm придет на исходный URL-адрес или порядок, в котором они поступают, но я должен хранить их все в целевом URL и отбрасывать только параметр id.
Заранее большое спасибо.