我有一个完全用法语的网站。我计划在几个月后有英文版。一切正常,人们可以切换他们的语言,会话处理他们的语言。
问题在于,现在我已经购买了一个与法国域名不同的域名,我想它需要指向主机的同一子域。
我想我需要制作一些代码来检查域名,以及用户是否使用英语来访问服务器,将会话切换为英语,否则使用法语。 我错了吗?
我想我会按照这种方式进行,但网站的许多其他部分可能与广告和图片完全不同。 处理多语言网站的最佳方法是对这些广告和图片的语言进行多次比较吗?或在其他子域上复制该网站并将新域名链接到新文件夹(我认为从长远来看,复制将是最糟糕的。)
任何建议都是适用的。
(此问题中的两个问题均以粗体显示)
答案 0 :(得分:2)
如果您的意思是新域名,请将其指向与您的第一个域相同的服务器,并在PHP脚本中执行语言检查(或任何必需的内容):
if ($_SERVER["HTTP_HOST"] == "my_first_domain_name.fr")
{ // use french site }
elseif ($_SERVER["HTTP_HOST"] == "my_second_domain_name.fr")
{ // use english site }
您还可以考虑将法语内容拆分为名为/fr
的目录和/en
中的英语内容的解决方案。
答案 1 :(得分:1)
我为支持多种语言而构建的每个站点都检测到用户的语言,然后将其存储在会话信息中。您如何检测他们的语言取决于您(从他们的IP,默认为语言等),但请确保为用户提供更改语言的简便方法。然后,根据会话信息,我们将更新网站副本(即,提供不同的翻译),体验(例如,仅显示该区域的产品或新闻故事)等。
在不同的[子]域上拥有多个网站副本是一个可行的选择,虽然我不喜欢这样:你必须支持并发布到所有这些不同的域。
如果用户来自您的新域,您还可以设置会话变量。只是让两个域指向同一个地方。
答案 2 :(得分:1)
您应该尽可能少地复制..复制您的网站将导致将来出现可维护性问题。
您可以将两个域名指向同一服务器IP,并使用条件服务器端代码来确定向用户提供的内容。
在PHP中,变量$ _SERVER ['SERVER_NAME']使用客户端http请求中的服务器名称填充(例如'google.com')。
如果人们通过不同的域名访问相同的php脚本,您可以使用此值来决定要呈现的内容(例如,使用html模板,根据站点从数据库填充相关内容)。
就广告而言,您也可以这样做。像谷歌广告这样的东西可能会为你解决这个问题。
更一般地说,我们在这里谈论virtualhosts。有很多不同的方法来实现你所追求的目标,方法根据问题的具体情况,平台,托管限制等而有所不同。
许多网站都基于geoip的默认语言选择(以及广告,使用的货币等),并回归到某些默认语言。
答案 3 :(得分:0)
有很多方法可以削减这个cookie。请注意,由于会话由Cookie控制(默认情况下至少为),因此您的用户将根据他们请求的域获得不同的会话。