.htaccess 通过htaccess中的浏览器语言重定向,但仅从外部URL重定向

.htaccess 通过htaccess中的浏览器语言重定向,但仅从外部URL重定向,.htaccess,redirect,.htaccess,Redirect,由于浏览器语言的原因,是否可以重定向,但用户可以通过导航菜单链接更改网站上的语言 我试过了,但这会根据浏览器语言更改网站的语言,但之后就不可能再使用网站上的标志/导航了 # language starts with DE RewriteCond %{HTTP:Accept-Language} ^de [NC] RewriteRule ^$ /de/ [L,R=301] # Fallback to default Language (en) RewriteCond %{HTTP:Accept-L

由于浏览器语言的原因,是否可以重定向,但用户可以通过导航菜单链接更改网站上的语言

我试过了,但这会根据浏览器语言更改网站的语言,但之后就不可能再使用网站上的标志/导航了

# language starts with DE
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/ [L,R=301]

# Fallback to default Language (en)
RewriteCond %{HTTP:Accept-Language} !^.*(de|en).*$ [NC]
RewriteRule ^$ http://%{HTTP_HOST}/ [R,L]
我考虑过相同的htaccess代码,但有一个插件:“仅限外部访问者”,这样已经在这个域上的用户就可以使用标志/导航菜单来更改语言,并且不会再被htaccess重定向

是否可以通过htaccess实现这一点


谢谢

通常,如果尚未“选择”任何语言,则只需根据浏览器首选项重写即可。但是看起来你的默认语言是英语,URL中没有任何语言前缀,因此你无法区分“故意选择英语”和“刚刚访问了网站,这是默认的”这两种情况。你可以在此处查看推荐人,以确定访问者是否“来自外部”-但是推荐人是不可靠的,并且这些天来由于隐私原因越来越多地被过滤掉。你也可以在你的语言链接中添加一个参数,比如
?force_lang=EN
,或者类似的东西-并且如果设置了该参数,不要基于浏览器优先级进行重写。但是,您必须在所有站点内部链接上拖动此参数。