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

如何修改.htaccess实现指定子域名的/uk/路径重定向至/en/?

.htaccess重定向规则修改方案

你的原有规则无效的原因是:子域名属于HTTP请求的主机头(HTTP_HOST)部分,并非URL路径的一部分,而你只用RewriteRule去匹配路径,根本捕获不到子域名,所以规则不会触发。

正确的规则需要结合RewriteCond捕获子域名,再用RewriteRule匹配路径部分,具体代码如下:

RewriteEngine On

# 捕获符合规则的子域名
RewriteCond %{HTTP_HOST} ^([a-z]{2}|ceb|haw|hmn|zh-CN|zh-TW)\.example\.com$ [NC]
# 匹配路径中的/uk/开头部分,并重定向到对应子域名的/en/路径
RewriteRule ^uk/(.*)$ http://%1.example.com/en/$1 [R=301,L,QSA]

规则说明:

  • RewriteEngine On:开启URL重写引擎,这是所有重写规则的前提。
  • RewriteCond %{HTTP_HOST} ...:匹配请求的主机域名,%1代表这里捕获到的子域名(比如de、ceb、zh-CN)。[NC]表示忽略大小写(可选,根据你的需求决定是否保留)。
  • RewriteRule ^uk/(.*)$ ...:匹配以/uk/开头的路径,$1代表/uk/后面的所有内容(比如原路径是/uk/product/123,$1就是product/123)。
  • [R=301,L,QSA]:R=301表示永久重定向;L表示这是最后一条匹配的规则;QSA表示保留原URL的查询字符串(比如原URL有?id=456,重定向后会保留在新URL中,不需要的话可以去掉)。

测试示例:

  • 请求de.example.com/uk/ → 重定向到de.example.com/en/
  • 请求ceb.example.com/uk/product → 重定向到ceb.example.com/en/product
  • 请求zh-CN.example.com/uk/?sort=price → 重定向到zh-CN.example.com/en/?sort=price(如果保留QSA的话)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:05:34