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

多域名下.htaccess无跳转多语言Rewrite规则配置问题

多域名自动匹配Locale的.htaccess重写解决方案

完整生效的重写规则

替换你现有的.htaccess内容为以下代码:

RewriteEngine on

# 保留原有路径带locale的解析规则
RewriteRule ^(..)/?$ /?locale=$1 [QSA,L]
RewriteRule ^(..)?\/?select\/?$ /?locale=$1&action=price_group [QSA,L]
RewriteRule ^(..)?\/?pages/([a-zA-Z0-9_-]+)\/?$ /?locale=$1&action=$2 [QSA,L]

# 新增多域名自动匹配Locale规则
# 排除静态资源,避免干扰css/js/img等文件
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ [NC]
# 跳过真实存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# domain1.com自动绑定locale=en
RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
RewriteCond %{QUERY_STRING} !locale= [NC]
RewriteRule ^(.*)$ /?locale=en&%{QUERY_STRING} [QSA,L]

# domain2.com自动绑定locale=fi
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^domain2\.com$ [NC]
RewriteCond %{QUERY_STRING} !locale= [NC]
RewriteRule ^(.*)$ /?locale=fi&%{QUERY_STRING} [QSA,L]

规则优化说明

你之前的规则仅首页生效,核心问题是缺少必要的标志和精准的过滤条件:

  1. 静态资源过滤:用明确的后缀列表排除静态文件,替代你之前模糊的REQUEST_URI判断,避免误拦截路径请求
  2. 真实文件/目录跳过:添加!-f和!-d条件,不对服务器上真实存在的文件或目录执行重写
  3. 参数传递与标志:使用%{QUERY_STRING}保留原有请求参数,配合QSA标志确保参数拼接正确;L标志终止当前规则链,避免后续规则干扰
  4. 兼容性增强:[NC]标志忽略大小写,适配不同域名大小写的请求场景

验证覆盖场景

  • domain1.com → domain1.com/?locale=en
  • domain1.com/pages/test → domain1.com/?locale=en&action=test
  • domain2.com → domain2.com/?locale=fi
  • domain2.com/pages/test → domain2.com/?locale=fi&action=test
  • 原有路径带locale的功能不受影响:domain1.com/fi/pages/test → domain1.com/?locale=fi&action=test

内容的提问来源于stack exchange,提问作者Женя Лазарев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:05:24