You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache根据浏览器语言重定向至对应语言域名方案咨询

根据浏览器语言重定向到对应域名的解决方案

这里有几个实用的方案,你可以根据自己的部署环境来选:

方案1:前端JavaScript实现(适合静态站点/无服务器配置权限)

如果没法改服务器配置,这个方案最容易上手,直接在maindomain.com/path的页面里加一段代码就行:

// 尽量放在<head>标签里靠前位置,确保页面加载前就执行重定向
document.addEventListener('DOMContentLoaded', function() {
    // 获取浏览器的首选语言(兼容不同浏览器写法)
    const userLanguage = navigator.language || navigator.userLanguage;
    // 默认重定向到英文域名
    let targetDomain = 'english.com';
    
    // 判断是否是法语(包含fr-FR、fr-CA等所有法语变体)
    if (userLanguage.startsWith('fr')) {
        targetDomain = 'french.com';
    }
    
    // 保留当前页面的路径和查询参数,拼接完整重定向URL
    const redirectUrl = `https://${targetDomain}${window.location.pathname}${window.location.search}`;
    // 执行重定向
    window.location.href = redirectUrl;
});

注意:这个方案依赖JavaScript,如果用户浏览器禁用了JS,重定向就会失效。如果需要兼容这类场景,优先选服务器端方案。

方案2:Nginx服务器端配置(适合Nginx托管的站点)

服务器端重定向兼容性更好,完全不依赖前端。修改Nginx的站点配置文件:

server {
    listen 80;
    server_name maindomain.com;

    location / {
        # 匹配Accept-Language头以fr开头的请求(不区分大小写)
        if ($http_accept_language ~* ^fr) {
            return 302 https://french.com$request_uri;
        }
        # 默认重定向到英文域名,$request_uri会保留完整路径和参数
        return 302 https://english.com$request_uri;
    }
}

修改完后记得重启Nginx生效。如果是永久重定向(比如SEO需求),可以把302改成301。

方案3:Apache服务器端配置(适合Apache托管的站点)

需要先确保Apache启用了mod_rewrite模块,然后在站点根目录的.htaccess文件里添加规则:

RewriteEngine On

# 匹配Accept-Language头以fr开头的请求,[NC]表示不区分大小写
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^(.*)$ https://french.com/$1 [R=302,L]

# 默认重定向到英文域名,[L]表示匹配到这条后停止后续规则处理
RewriteRule ^(.*)$ https://english.com/$1 [R=302,L]

同样,永久重定向可以把302换成301。

内容的提问来源于stack exchange,提问作者Christian Meichtry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:23:52