2012-04-28 167 views
1

我在PHP中有一个多语言网站(西班牙语,英语,法语),其主要语言是英语。多语言.htaccess重定向到子域

如果$_SESSION['idm']设置为'en',它会加载一个带有翻译的文件。

我想这样设置它:

如果用户的语言是西班牙语

www.mydomain.commydomain.com - >es.mydomain.com

www.mydomain.com/video.php?id=3 - >es.mydomain.com/video.php?id=3

如果用户语言是法语

www.mydomain.com and mydomain.com - >fr.mydomain.com

www.mydomain.com/video.php?id=3 - >fr.mydomain.com/video.php?id=3

如果不是上述任何

www.mydomain.com and mydomain.com - >en.mydomain.com

www.mydomain.com/video.php?id=3 - >en.mydomain.com/video.php?id=3

我该怎么做,而且,这是一个好的SEO明智吗?

+0

我不认为这是可行的使用.htaccess ...你需要从PHP做到这一点。 – Aziz 2012-04-28 21:38:54

+0

@Aziz你如何在PHP中做到这一点? – Aleix 2012-04-28 21:47:43

回答

3

在PHP中:

// check if the current domain is the generic one 
$req_domain = $_SERVER['SERVER_NAME']; 
if ($req_domain == 'www.mydomain.com' || $req_domain == 'mydomain.com') { 
    $subdomains = array ('fr' => 'fr.mydomain.com', 
         'es' => 'es.mydomain.com', 
         'en' => 'en.mydomain.com'); 


    // get the language from the session variable (if set), or use default 
    $lang = 'en'; // default language 
    if (isset($_SESSION['idm']) && isset($subdomains[$_SESSION['idm']])) 
    $lang = $_SESSION['idm']; // selected language 


    // redirect while maintaining the complete request URI 
    header('Location: http://' . $domains[$lang] . $_SERVER['REQUEST_URI']); 
    exit; 
} 
+0

谢谢,这非常有用!我希望我可以正面投票:) – Aleix 2012-04-28 23:56:48

+0

因此每个域都会有一整套代码?即每个子域将包含所有文件? – 2015-07-26 15:57:24

0

这对SEO比隐藏在搜索引擎的语言变体当前的基于会话的方法更好。

稍作修改就是在主域上保留默认语言(en)。

为了使效果最好:

确保页面链接相对这样你就不会在每一次点击导致重定向。

将hreflang元数据添加到页面以指示翻译的位置。

不要强迫人们进入语言。确保他们可以很容易地改变。