基于浏览器语言和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
&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
标志)。顺序应该无关紧要,但如果您确实需要,可以在末尾添加(尽管这不是“自然方式”)
但是,关于语言检测,这有一些警告:
- 这里不可能“准确”地确定语言
- 这假设“主要”语言首先在
HTTP头中定义。虽然这很常见,但不能保证Accept language
- 这不会告诉您用户实际使用的语言,只是
是浏览器可以接受的语言。无法确定此处使用的“实际”语言pt
- 因此,基于(基本)语言检测来“重定向”用户通常是个坏主意