首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据可拓和语言重定向域

根据可拓和语言重定向域
EN

Stack Overflow用户
提问于 2016-01-30 09:23:20
回答 2查看 321关注 0票数 0

我正在为一个多语言网站寻找一个解决方案。我有四个领域:

  • domain.com
  • domain.be
  • domain.nl
  • domain.uk

根据该领域,合适的语言必须是loaded.The语言,由?lang=来决定。我试过用.htaccess写电影,但它不适合我的需要。当用户访问domain.com/page时,.htaccess不处理规则。所以我想用php来做。当前,语言和cookie由这个片段php设置:

代码语言:javascript
复制
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en_eu';
}

switch ($lang) {
  case 'nl_be':
  $lang_file = 'nl_be.php';
  break;

  case 'nl_nl':
  $lang_file = 'nl_nl.php';
  break;

  case 'en_us':
  $lang_file = 'en_us.php';
  break;

  case 'en_uk':
  $lang_file = 'en_us.php';
  break;

  case 'en_eu':
  $lang_file = 'en_eu.php';
  break;

  default:
  $lang_file = 'en_eu.php';

}

include_once 'components/languages/'.$lang_file;
?>

我正在考虑添加一些行来确定域名,并添加一些if语句来根据域来确定语言。但我不知道该怎么做,这是否是正确的做法。

代码语言:javascript
复制
<?php
$url =  "//{$_SERVER['HTTP_HOST']}";

if ($url == domain.be) {
    $lang = 'nl_be';
}
elseif ($url == domain.uk) {
    $lang = 'en_uk';
}
else ( ) {
    $lang = 'en_us';
}
?>
EN

回答 2

Stack Overflow用户

发布于 2016-01-30 11:28:56

看完这篇文章后:https://support.google.com/webmasters/answer/182192?hl=en

谷歌建议在他们自己的网址上保留不同的语言版本。

由于您已经拥有顶级域名,我只需检查域名并从中确定语言。

然后在每一页的顶部给用户提供语言选择链接:

代码语言:javascript
复制
English: example.com/node/1
French:  example.fr/node/1
etc.

隐藏当前语言链接。

并在头中添加链接元素以补充上述内容:

代码语言:javascript
复制
<link rel="alternate" hreflang="es" href="http://example.es/node/1" />
票数 1
EN

Stack Overflow用户

发布于 2016-01-30 09:45:38

我在这个线程How to default to another language based on domain中找到了答案

它在SetEnvIf中使用.htaccess,而php处理其余的

.htaccess中的代码:

代码语言:javascript
复制
SetEnvIf Host "\.be$" SITE_LANGUAGE=nl_be
SetEnvIf Host "\.uk$" SITE_LANGUAGE=en_uk

然后用以下方式调用SITE_LANGUAGE:

代码语言:javascript
复制
$_SERVER['SITE_LANGUAGE'];

PHP中的代码:

代码语言:javascript
复制
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

$lang = $_SERVER['SITE_LANGUAGE'];

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en_eu';
}

switch ($lang) {
  case 'nl_be':
  $lang_file = 'nl_be.php';
  break;

  case 'nl_nl':
  $lang_file = 'nl_nl.php';
  break;

  case 'en_us':
  $lang_file = 'en_us.php';
  break;

  case 'en_uk':
  $lang_file = 'en_us.php';
  break;

  case 'en_eu':
  $lang_file = 'en_eu.php';
  break;

  default:
  $lang_file = 'en_eu.php';

}

include_once 'components/languages/'.$lang_file;
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35100051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档