Apache2多语言支持配置教程
Apache2配置多语言需启用mod_rewrite和mod_headers模块,利用Accept-Language请求头自动重定向至对应语言子目录,如/en/、/zh/;在各子目录存放资源文件,可选设置Content-Language头优化SEO,重启服务并测试验证即可。
Apache2 配置多语言支持,这事儿说复杂也不复杂,关键是把几个核心环节理清楚。很多人在部署国际化站点时,第一步就卡在了环境准备上——其实只需要把握好 HTTP 头信息和 URL 重写规则,就能把基本方案跑通。下面把流程拆开来讲,每一步都附带可复用的配置片段。

先确保两个模块处于启用状态:mod_rewrite 和 mod_headers。没有它们,后面的重写和头信息设置都无从谈起。
sudo a2enmod rewrite
sudo a2enmod headers
接下来,打开虚拟主机配置文件——通常在 /etc/apache2/sites-a vailable/ 目录里。你可以选择为每种语言单独配置一个虚拟主机,也可以在一个虚拟主机内完成多语言分流。这里展示的是后一种做法,通过 Accept-Language 请求头来自动匹配语言。
ServerName example.com
ServerAlias www.example.com
RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^(.*)$ /en/$1 [L]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^(.*)$ /fr/$1 [L]
DocumentRoot /var/www/html
# 其他配置...
注意上面的规则只是示例——实际项目中还需要考虑语言优先级和降级策略。但基础逻辑已经很清晰了:浏览器发来的语言偏好,决定了用户访问哪个语言目录。
有了虚拟主机配置,接着在网站根目录下创建对应的语言子目录:
mkdir /var/www/html/en
mkdir /var/www/html/fr
每个语言目录里放对应的内容文件、CSS、Ja vaScript 和图片资源。这里有个容易忽略的细节:资源文件的路径最好用相对路径或统一前缀,避免跨语言目录时出现 404。
为了让浏览器更明确地知道当前页面属于哪种语言,可以用 mod_headers 在目录级别设置 Content-Language 头:
Header set Content-Language "en"
Header set Content-Language "fr"
这一步不是必需的,但能提升 SEO 和用户袋里的识别精度。
所有配置完成后,重启 Apache,使更改生效:
sudo systemctl restart apache2
最后一步当然是测试。改变浏览器的语言偏好设置,或者直接用 curl 带上不同的 Accept-Language 头,看看页面内容是否按预期切换,同时检查响应头里是否有正确的 Content-Language 值。
需要说明的是,以上方案只解决了“根据 HTTP 头自动重定向到对应语言目录”这一层基础需求。真实的多语言项目往往面临更复杂的场景:URL 中的语言前缀处理、动态内容的翻译与缓存、数据库多语言字段的管理……这些都需要借助国际化(i18n)和本地化(l10n)框架来系统解决。但从入门到跑通,上面这几步足够你搭建一个可用的多语言站点原型了。
