#.htaccess
#.htaccess
Вопрос:
Я ищу способ .htaccess
перенаправить посещения, поступающие из GMB, если совпадают два условия:
-
URL-адрес содержит параметр
?utm_source=gmb
Пример:
https://example.com/?utm_source=gmbamp;utm_medium=organicamp;utm_content=listingamp;utm_campaign=1
-
язык браузера — португальский (
pt
,pt-pt
илиpt-br
)
Затем для перенаправления на страницу на португальском языке необходимо только добавить amp;lang=pt-pt
в конце URL-адреса, поскольку сайт использует WPML с language в качестве параметра.
Все остальные запросы, без ?utm_source=gmb
, я предпочитаю не перенаправлять, чтобы избежать проблем с индексацией в поисковой выдаче.
Ответ №1:
Вы можете сделать что-то вроде следующего при .htaccess
использовании mod_rewrite, однако обратите внимание на следующие предостережения:
RewriteEngine On
# Check for "utm_source=gmb" anywhere in the query string
RewriteCond %{QUERY_STRING} (?:^|amp;)utm_source=gmb(?:$|amp;)
RewriteCond %{HTTP:Accept-Language} ^pt(|-pt|-br)
RewriteRule (.*) /$1?lang=pt-pt [QSA,R,L]
добавить
amp;lang=pt-pt
в конце URL-адреса
Обратите внимание, что это добавляется lang=pt-pt
в начале строки запроса, а оставшаяся строка запроса добавляется ( QSA
флаг). Порядок не должен иметь значения, но его можно добавить в конце, если вы действительно этого требуете (хотя это не «естественный способ» сделать это).
Однако это имеет ряд предостережений относительно определения языка:
- Здесь невозможно «точно» определить язык.
- Это предполагает, что «основной» язык определяется первым в заголовке
Accept-Language
HTTP. Хотя это обычное дело, это не гарантировано. - Это не говорит вам, какой язык на самом деле использует пользователь, просто это
pt
принятый язык браузером. Нет никакого способа определить «фактический» язык, используемый здесь. - Следовательно, «перенаправление» пользователя на основе (базового) определения языка, как правило, является плохой идеей.