繁体   English   中英

从根域到子域的wordpress重定向

[英]wordpress redirection from root domain to a subdomain

环境描述:一个Wordpress多站点,具有根站点example.com和多个子域,例如en.example.com,es.example ...

问题:如何根据浏览器的语言使用户进入正确的子域?

到目前为止发现的插件:Wordpress重定向,其描述包含以下内容:

WordPress插件,可从多站点项目的根站点重定向到特定于语言的网络站点。

请注意:此插件不允许根网站上的内容! 请仔细阅读此说明,看看它是否适合您。

看来,这个重定向插件是用于重定向到子文件夹的,我是wordpress的新手,而且很长时间以前,我已经用PHP做过一些事情,但是我想它应该没有那么复杂。

您的体系结构是错误的,除非您希望其他语言具有完全不同的设计/主题,否则WordPress多站点将不用于语言翻译,而应使用Polylang(免费)之类的插件,而您可以使用子域!

但是,只是为了回答您的问题,如果继续使用当前的多站点体系结构,您将使用以下函数:

function redirectOtherLanguages(){

    if(!isReturningVisitor())
    {
        $domain = getDomain();
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        $newAddress = 'http://'.$lang.'.'.$domain.$_SERVER['REQUEST_URI'];
        echo $newAddress; die();
        header("Location: ".$newAddress);//include check session FR
    }
}

function getDomain(){
    $parts=explode('.', $_SERVER["SERVER_NAME"]);
    $potentialSubDomain = array_shift($parts);
    //print_r($parts); die();
    if(!empty($parts)){
        if(count($parts)>=2) return implode('.',$parts);
        else return $_SERVER["SERVER_NAME"];
    }
    else return null;
}

//This function prevents redirecting returning users
function isReturningVisitor(){

    if(empty($_COOKIE['returning_visitor'])) 
    {
        setcookie("returning", TRUE, time()+60*60*24*365); // Expires in a year
        return false;       
    }
    return true;       
}

redirectOtherLanguages();

这是您将遇到的其他一些问题:

  1. 由于每种语言是一个不同的站点,因此您将需要复制每个帖子,页面等。
  2. 您可能会遇到问题,即您的网站具有其他子域而非语言本身,请考虑使用Polylang或任何其他方法。
  3. 您还需要在重定向之前检测该语言页面是否存在(避免出现404错误)。
  4. 您将需要在数组中指定支持的语言列表,如果在数组中未找到用户语言,则需要指定默认语言。
  5. 等等!!!!!!!!!!!!!!!!!!!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM