【问题标题】:Redirection to english version if browser language is not russian如果浏览器语言不是俄语,则重定向到英文版本
【发布时间】:2021-07-16 01:54:48
【问题描述】:

我想使用 php 或 js 重定向没有俄罗斯浏览器的用户。

我的代码看起来像这样,但不起作用:

<?php
$locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if ($locale != "ru_RU"){
header('Location: https://www.site/en/');
die();
}
?>

如果我写echo $locale,它将写ru_RU,但仅在我登录管理面板的浏览器中(在普通浏览器中它不会显示任何内容)。我怎样才能让它在全球范围内运作?

我也有这个功能的JS,但我不知道在此之后要写什么:

<script>
let uri = window.location;
let lang = window.navigator.language;
if( uri.href.indexOf('lang') < 0) {
    if (lang != 'ru-RU'){
    /*redirect to "/en/"      */
}
}
</script>

函数不应影响页面的加载速度。你知道怎么做吗?

【问题讨论】:

  • 您可以在 JavaScript 中使用window.location.href = "https://www.fashiondance.in.ua/en/"; 进行重定向。
  • @nilsf 我想重定向所有页面,而不仅仅是主页面。如果我把这个代码而不是/*redirect to "/en/" */,它只是保持重定向英文浏览器。
  • 您可以尝试检查用户是否在 en/ 目录中,如果没有重定向。您在英文版中的所有链接也应该指向英文版,因此您不必每次用户点击链接时都运行代码。
  • @nilsf 我该怎么做?你能给我一个例子的链接吗?我在互联网上没有找到任何东西。

标签: javascript php wordpress url redirect


【解决方案1】:

使用Navigator language Property 获取用户的浏览器语言,如果不是“ru-RU”,则使用Window Location Pathname 获取当前页面路径并重定向到您的域+ /en + 页面路径。

// Get browser language
var navLang = navigator.language || navigator.userLanguage; 
// Check if it is Russian
if (navLang != 'ru-RU'){
    // Get the page path
    var path = window.location.pathname;
    // Redirect to an English page with the full path
    window.location.href = "/en" + path;
}

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-01-21
    • 1970-01-01
    • 2018-02-10
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多