2012-04-28 164 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元數據添加到頁面以指示翻譯的位置。

不要強迫人們進入語言。確保他們可以很容易地改變。