基于浏览器语言和utm参数的Redirect.htaccess

基于浏览器语言和utm参数的Redirect.htaccess,.htaccess,.htaccess,我正在.htaccess中寻找一种方法来重定向来自GMB的访问,如果两个条件匹配: URL包含参数?utm\u source=gmb 例如: https://example.com/?utm_source=gmb&utm_medium=organic&utm_content=listing&utm_campaign=1 浏览器语言为葡萄牙语(pt,pt或pt br) 然后,要重定向到葡萄牙语页面,只需在URL的末尾添加&lang=pt,因为该站点使用带有语言的WPML作为参数 没有?ut

我正在
.htaccess
中寻找一种方法来重定向来自GMB的访问,如果两个条件匹配:

  • URL包含参数
    ?utm\u source=gmb

    例如:

    https://example.com/?utm_source=gmb&utm_medium=organic&utm_content=listing&utm_campaign=1

  • 浏览器语言为葡萄牙语(
    pt
    pt
    pt br

然后,要重定向到葡萄牙语页面,只需在URL的末尾添加
&lang=pt
,因为该站点使用带有语言的WPML作为参数


没有
?utm_source=gmb
的所有其他请求,我宁愿不重定向,以避免SERP上的索引问题。

您可以使用mod_rewrite在
.htaccess
中执行以下操作,但是请注意以下注意事项:

RewriteEngine On

# Check for "utm_source=gmb" anywhere in the query string
RewriteCond %{QUERY_STRING} (?:^|&)utm_source=gmb(?:$|&)
RewriteCond %{HTTP:Accept-Language} ^pt(|-pt|-br)
RewriteRule (.*) /$1?lang=pt-pt [QSA,R,L]
在URL末尾添加
&lang=pt

请注意,这将在查询字符串的开头添加
lang=pt pt
,并追加剩余的查询字符串(
QSA
标志)。顺序应该无关紧要,但如果您确实需要,可以在末尾添加(尽管这不是“自然方式”)

但是,关于语言检测,这有一些警告:

  • 这里不可能“准确”地确定语言
  • 这假设“主要”语言首先在
    Accept language
    HTTP头中定义。虽然这很常见,但不能保证
  • 这不会告诉您用户实际使用的语言,只是
    pt
    是浏览器可以接受的语言。无法确定此处使用的“实际”语言
  • 因此,基于(基本)语言检测来“重定向”用户通常是个坏主意