#regex #.htaccess #mod-rewrite #redirect
#регулярное выражение #.htaccess #мод-перезапись #перенаправление
Вопрос:
Что мне нужно, так это перенаправить с помощью htaccess URL-адрес, в котором уже есть некоторые параметры Google Analytics, и перенаправить его, добавив языковой параметр в конце URL-адреса. Я пробовал это пока безуспешно, но в какой-то момент я знаю, что это неправильно:
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^random?$1 http://www.domain.com/random?$1amp;language=french [R=301,QSA]
Я пытаюсь использовать $ 1, я не знаю, правильно ли это, цель которого — включить все параметры, такие как utm_source = 1 amp; utm_medium = 2, после этого мне нужно будет включить параметр language, поэтому перенаправленный URL-адрес должен выглядеть так http://www.domain.com/random?utm_source=1amp;utm_medium=2amp;language=french .
Каков правильный способ добиться того, что мне нужно?
Заранее благодарю.
Ответ №1:
Обратные ссылки
В вашем правиле $1
есть обратная ссылка на группу захвата, которая еще не существует.
Попробуйте это вместо:
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteCond %{QUERY_STRING} !^.*language=french
RewriteRule ^(random.*) $1?language=french [R=301,QSA,L]
- В начале
^
пути URL(random.*)
-адреса совпадаютrandom
и остальные URL-адреса. (Таким образом, мы переписываем только URL-адреса, начинающиеся сrandom
… это то, что вы хотите?) - Мы переписываем с обратной ссылкой
$1
, за которой следует строка запроса?language=french
QSA
Флаг гарантирует, что будут добавлены существующие параметры строки запроса.
Комментарии:
1. К вашему сведению: добавлено объяснение. Вы уверены, что хотите переписать только URL-адреса, начинающиеся с
random
?2. Здравствуйте, спасибо за ваш ответ и объяснение, я пытался, но перенаправление указывает полный путь к шаблону и, следовательно, является ошибкой 404: domain.com/var/www/vhosts/httpdocs … что следует отредактировать в этом правиле, чтобы оно работало правильно? случайно? язык = французский отображается правильно.
3. Полный путь? Какой URL-адрес вы его разместили, и какой URL-адрес вы получили?
4. Я скопировал то же правило, которое вы отредактировали, вывод: domain.com/var/www/vhosts/httpdocs /. …….
5. Да, я понял это из вашего предыдущего комментария. Вы не ответили на мой вопрос.