网站如何做中英文双语言?一文搞懂避坑指南

找建站公司,最怕什么?不是怕技术不行,而是怕被坑高价。很多老板拿着需求去问价,对方张嘴就是几万起步,还含糊其辞说“包含多语言功能”,一问细节就绕圈子。其实,网站如何做中英文双语言这件事,技术门槛并不高,但里面的门道和成本陷阱很多。今天我就把这套逻辑拆开了揉碎了讲,一文搞懂背后的技术选型和实操细节,让你下次再跟开发团队或外包公司谈,心里有底,不被忽悠。

项目背景与需求:为什么非要搞双语?

先聊个真实场景。去年接了个做精密仪器的客户,老张。老张的公司主要做出口,原本只有一个中文官网,后来发现海外客户搜不到他们,或者搜到了看不懂。老张找了两家建站公司,一家报价 1.5 万,另一家报价 3.5 万。报价低的说“简单翻译一下就行”,报价高的说“要做国际化架构,独立数据库字段”。老张懵了,到底该听谁的?

这里有个核心痛点:双语不仅仅是翻译,更是 SEO 和数据结构的重新梳理。

很多新手设计师转前端,或者刚入行的开发者,容易犯一个错误:以为双语就是加个 <div class="en"> 和 <div class="zh">,然后写个 JS 切换一下显示。这在原型图里没问题,但上了生产环境,麻烦就大了。

老张的需求其实很典型:

  1. SEO 必须达标:Google 要能分别抓取中文和英文页面,而不是把两个语言混在一个页面里。
  2. 维护成本要低:老张没有专职翻译,希望后台能分开管理,甚至能对接机器翻译接口自动填充初稿。
  3. 域名策略:是用子域名 en.yourdomain.com,还是用子目录 yourdomain.com/en/,亦或是语言参数 ?lang=en?

这三个问题,直接决定了后续的技术选型和成本。如果建站公司在这一步没跟你讲清楚,那后面的坑就是无底洞。

技术选型:子目录 vs 子域名,到底选哪个?

这是很多非技术人员最容易混淆的地方。咱们抛开那些复杂的理论,直接看结果。

方案一:子目录模式(推荐大多数中小企业) URL 结构:www.yourdomain.com/zh/ 和 www.yourdomain.com/en/

  • 优点:权重集中。Google 认为这是同一个域下的不同路径,整体权重共享。对于新站或权重较低的站,这是最稳妥的选择。
  • 缺点:URL 看起来稍长。
  • 适用场景:预算有限、品牌域名价值较高、希望快速起量的网站。

方案二:子域名模式 URL 结构:zh.yourdomain.com 和 en.yourdomain.com

  • 优点:管理独立。如果中英文内容差异极大,或者需要不同的服务器部署(比如国内访问中文,海外访问英文),子域名更灵活。
  • 缺点:SEO 权重分散。在 Google 眼中,子域名有时被视为独立的站点,需要重新建立信任度。
  • 适用场景:大型集团、跨国业务、对服务器部署有特殊要求的场景。

方案三:语言参数模式 URL 结构:www.yourdomain.com/index.php?lang=en

  • 优点:实现最简单,改个参数就行。
  • 缺点:SEO 灾难。Google 很难区分这两个 URL 代表不同的语言内容,容易导致索引混乱,甚至因为参数过多被降权。
  • 适用场景:内部管理系统,或者完全不在乎 SEO 的展示页。坚决不推荐用于对外营销官网。

老张最后选了子目录模式。为什么?因为他的域名权重还行,且希望中英文能互相导流。如果建站公司一开始就给你推语言参数,或者不解释清楚子域名和子目录的 SEO 区别,那你就要小心了,这往往意味着他们技术能力有限,或者想省事。

核心实现:代码层面的正确姿势

这里要敲黑板了。很多外包公司为了省事,直接在模板里硬编码两套 HTML。比如:

<!-- 错误示范:硬编码 -->
<h1 class="zh">公司简介</h1>
<h1 class="en" style="display:none;">About Us</h1>

这种做法,前端看着是切换了,但对搜索引擎来说,这就是一个页面里混杂了两种语言,或者隐藏内容被判定为作弊。正确的做法是:服务端渲染不同内容,或者通过路由返回不同的 HTML 文件。

我们以 PHP + MySQL 为例,展示一个标准的实现逻辑。

1. 数据库设计 不要在一个 pages 表里加 title_zh 和 title_en 字段。这样扩展性太差,万一以后要加法语呢? 应该建立关联表:

CREATE TABLE `languages` (`id` INT(11) NOT NULL AUTO_INCREMENT,`code` VARCHAR(5) NOT NULL, -- 'zh', 'en'`name` VARCHAR(50) NOT NULL,PRIMARY KEY (`id`)
);CREATE TABLE `page_translations` (`id` INT(11) NOT NULL AUTO_INCREMENT,`page_id` INT(11) NOT NULL, -- 关联主页面ID`lang_id` INT(11) NOT NULL, -- 关联语言ID`title` VARCHAR(255) NOT NULL,`content` TEXT,`slug` VARCHAR(255) NOT NULL, -- 用于生成URLPRIMARY KEY (`id`),UNIQUE KEY `unique_page_lang` (`page_id`, `lang_id`)
);

2. 后端路由逻辑(PHP 示例) 在 .htaccess 或 Nginx 配置中,将 /en/about-us 这种请求重写并传递给后端。

// 伪代码逻辑
public function getPage($langCode, $slug) {// 1. 验证语言代码是否合法$langId = $this->getLangIdByCode($langCode);if (!$langId) {return 404;}// 2. 查询翻译表$translation = $this->db->query("SELECT * FROM page_translations WHERE lang_id = ? AND slug = ?",[$langId, $slug]);if (!$translation) {// 如果当前语言没有内容,是否回退到默认语言?策略要定好return 404; }// 3. 返回视图,渲染对应的 HTMLreturn view('page', ['content' => $translation]);
}

3. 关键 SEO 标签:hreflang 这是网站如何做中英文双语言中最容易被忽略,但最影响排名的一环。你必须在每个页面的 <head> 中告诉 Google,这个页面的其他语言版本在哪里。

<!-- 在中文页面 <head> 中 -->
<link rel="alternate" hreflang="zh" href="https://www.yourdomain.com/zh/about-us" />
<link rel="alternate" hreflang="en" href="https://www.yourdomain.com/en/about-us" />
<link rel="alternate" hreflang="x-default" href="https://www.yourdomain.com/en/about-us" /><!-- 在英文页面 <head> 中 -->
<link rel="alternate" hreflang="en" href="https://www.yourdomain.com/en/about-us" />
<link rel="alternate" hreflang="zh" href="https://www.yourdomain.com/zh/about-us" />
<link rel="alternate" hreflang="x-default" href="https://www.yourdomain.com/en/about-us" />

注意:hreflang 必须是相互指认的。如果中文页指向英文页,英文页必须指向中文页,否则 Google 会认为你的标记无效,甚至惩罚你的站点。很多外包公司漏掉这一步,导致客户花了钱做双语,结果 Google 还是只收录了中文,英文页在搜索结果里根本不显示。

上线与优化:Google Search Console 的验证

代码写好了,上线了,是不是就完事了?别急。这时候,Google Search Console 就派上大用场了。

老张上线后,第一件事就是去 Google Search Console 添加站点。很多设计师转前端的朋友,这时候会卡住:“我提交了 sitemap,怎么一直不收录?”

原因通常有几点:

  1. Sitemap 没区分语言:你提交的 sitemap.xml 里,中文和英文的 URL 混在一起,且没有标记 hreflang。
    • 正确做法:在 Sitemap 中使用 <xhtml:link rel="alternate" ...> 标签,或者在 robots.txt 中指向不同的语言 Sitemap(如果结构复杂)。
  2. 抓取预算问题:新站抓取频率低。你需要手动在 GSC 中使用“网址检查”工具,提交关键页面请求索引。
  3. 覆盖范围报告:一定要看 GSC 的“覆盖范围”报告。如果显示“重复页面”,很可能就是 hreflang 标记错误,或者服务器返回了 200 但内容相同的页面。

老张当时就遇到了“重复页面”问题。我们检查发现,他在服务器配置里,把 /en/ 结尾的 URL 也重定向到了 /,导致 Google 认为这两个页面内容一样。修改 Nginx 配置,明确区分路由后,问题才解决。

这里给一个 Nginx 配置的片段,避免常见错误:

server {listen 80;server_name www.yourdomain.com;# 禁止带 www 或非 www 的混乱访问,统一重定向if ($host != "www.yourdomain.com") {return 301 https://www.yourdomain.com$request_uri;}# 关键:不要盲目将所有请求重定向到首页# 确保 /zh/ 和 /en/ 的路由能正确传递到 PHPlocation ~ \.php$ {fastcgi_pass unix:/var/run/php-fpm.sock;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}# 处理子目录路由,例如 /en/about-uslocation /en/ {try_files $uri $uri/ /index.php?$query_string;}location /zh/ {try_files $uri $uri/ /index.php?$query_string;}
}

经验总结:避坑指南与职业建议

回顾老张这个项目,有几个关键点值得所有想做双语站的朋友记住:

  1. 不要相信“一键翻译”能解决 SEO 问题。机器翻译的内容质量参差不齐,Google 对低质量重复内容的容忍度很低。初期可以用机翻打底,但核心页面(首页、产品页)必须人工润色。
  2. hreflang 是生命线。这是区分语言版本的唯一权威信号。如果建站公司说“我们用了 JS 切换,所以不需要 hreflang”,直接拉黑。
  3. 后台管理要解耦。设计师转前端的朋友容易陷入“前端视角”,觉得把页面切好看就行。但业务视角下,内容录入效率才是核心。如果录入中文时,还要手动去英文栏填一遍,客户会疯的。
  4. 测试环境要模拟不同 IP。有些 CDN 或服务器会根据 IP 自动跳转语言。如果你在测试时,Googlebot 被错误地重定向到了中文页,你的英文 SEO 就废了。务必在 GSC 中验证 Googlebot 看到的页面与你预期一致。

对于设计师转前端的朋友来说,理解这套逻辑,能帮你跳出纯视觉的局限。当你开始关注 URL 结构、HTTP 状态码、SEO 标记时,你的技术深度就上了一个台阶。这不仅是做网站,更是理解互联网信息流动的规则。

很多老板问,为什么有的公司报价低,有的高?低价往往意味着简化了后端逻辑,用了硬编码或语言参数,短期看能跑,长期看是 SEO 黑洞,后期改造成本远高于初期投入。而高价公司,可能真的在数据库设计、路由逻辑、SEO 标签上做了精细化处理。

网站如何做中英文双语言,本质上是一个系统工程,涉及前端展示、后端逻辑、数据库设计、SEO 策略和服务器配置。它不是一个简单的功能点,而是一套架构选择。

在决定建站之前,问对方三个问题:

  1. 你们用子目录还是子域名?为什么?
  2. 如何生成 hreflang 标签?是动态生成还是静态写入?
  3. 后台如何管理多语言内容?是否支持批量导入?

如果对方答不上来,或者回答含糊,那这家公司的技术实力,你就得打个问号了。

还有什么建站疑问?评论区留言挨个回。