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

如何在.htaccess中根据URL语言参数编写ErrorDocument指令

多语言站点动态匹配对应语言404页面配置方法

ErrorDocument是Apache的静态核心指令,服务启动加载配置时就会固定跳转路径,没法直接动态提取URL里的语言标识,得配合mod_rewrite规则或者轻量路由脚本实现,下面是两种可直接落地的方案:

方案1:纯.htaccess规则实现(无需后端脚本)

前提是你所有语言的404页面路径遵循统一命名规则,比如都放在/404/[语言标识].html路径下(比如英文对应/404/en.html、简体中文对应/404/zh.html、日文对应/404/ja.html),直接把下面的配置替换你原来的内容即可:

RewriteEngine On

# 从URL开头提取语言标识,存入环境变量
# 如果你的站点有zh-CN、zh-TW这类带地区的语言标识,把下面正则里的([a-z]{2})改成([a-z]{2}(-[A-Za-z]{2,})?)
RewriteCond %{REQUEST_URI} ^/([a-z]{2})/ [NC]
RewriteRule ^ - [E=REQUEST_LANG:%1]

# 提取到合法语言标识、且对应404文件存在时,直接返回对应语言的404页
RewriteCond %{ENV:REQUEST_LANG} !^$
RewriteCond %{DOCUMENT_ROOT}/404/%{ENV:REQUEST_LANG}.html -f
RewriteRule ^ /404/%{ENV:REQUEST_LANG}.html? [L,NC,R=404]

# 兜底规则:根路径请求、语言标识非法的请求,统一返回默认语言404(这里默认用英文,可自行修改路径)
ErrorDocument 404 /404/en.html

使用这个方案需要提前开启Apache的mod_rewrite模块,同时站点虚拟主机配置里要设置AllowOverride All,否则.htaccess规则不会生效。

方案2:ErrorDocument配合轻量路由脚本(兼容性最好,无重写循环问题)

如果你的服务器环境rewrite规则容易出现循环、或者404页面路径规则比较复杂,用这个方案最稳妥:

  1. 先把原来的ErrorDocument 404 /404/替换成下面的配置,把所有404请求统一交给路由文件处理:
    ErrorDocument 404 /404-router.php
    
  2. 在站点根目录新建404-router.php文件,复制下面的代码,根据自己的实际页面路径、支持的语言列表调整参数即可:
    <?php
    // 配置项:改成你站点实际支持的语言、默认语言、404页面存放路径
    $allowed_langs = ['en', 'zh', 'ja', 'ko'];
    $default_lang = 'en';
    $error_page_path = __DIR__ . '/404/';
    
    // 从触发404的原请求地址里提取语言段
    $request_path = parse_url($_SERVER['REDIRECT_URL'], PHP_URL_PATH);
    $path_segs = array_filter(explode('/', trim($request_path, '/')));
    $current_lang = $path_segs[0] ?? $default_lang;
    
    // 语言不合法就回退到默认
    if (!in_array($current_lang, $allowed_langs)) {
        $current_lang = $default_lang;
    }
    
    // 返回404状态码,加载对应语言的页面
    http_response_code(404);
    require $error_page_path . "{$current_lang}.html";
    exit;
    

配置注意点

  • 一定要留默认语言的404页做兜底,避免URL不带语言段、或者语言标识输错时出现二次404
  • 配置完记得测试:分别访问不同语言路径下的不存在地址,确认返回的是对应语言的404内容,同时HTTP状态码是404,切记不要返回200状态码,否则会严重影响站点SEO
  • 如果你的语言标识不是放在URL第一段,只要修改对应提取规则的正则/代码逻辑即可

内容的提问来源于stack exchange,提问作者Adam Krawczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:54:20