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

求助配置.htaccess RewriteRule实现特定路径跨域名重定向

.htaccess RewriteRule 重定向问题解决方法

问题需求

需要将形如 example.com/de/anypath 的URL永久重定向到 example.de/anypath,其中anypath可以是任意路径,例如:

  • example.com/de/articles/programming/hello-world → example.de/articles/programming/hello-world
  • example.com/de/events/pic-nic → example.de/events/pic-nic

现有尝试及问题

当前编写的规则未生效:

RewriteRule "^/de/(.*)$" "http://example.de/$1" [R=301,NC,L]

搭配的RewriteCond也存在错误:

RewriteCond %{HTTP_HOST} http://example.com/de

已确认.htaccess文件有效(输入错误会触发报错),且测试如下全局重定向规则可正常生效:

RewriteRule "^(.*)$" "https://google.com" [R=301,NC,L]

解决方案

问题出在两个核心细节:

  1. .htaccess的路径匹配逻辑:在.htaccess文件中,RewriteRule的匹配模式不需要以/开头——因为请求路径已经去除了网站根目录的前缀(比如/de/anypath在.htaccess上下文里实际匹配的是de/anypath)。
  2. HTTP_HOST的取值范围:%{HTTP_HOST}仅存储请求的主机名(如example.com),不包含协议和路径,所以之前的RewriteCond写法完全不符合规则。

正确的配置规则如下:

# 仅对example.com的请求触发重定向
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# 匹配/de/开头的路径,捕获后续任意内容并重定向
RewriteRule ^de/(.*)$ http://example.de/$1 [R=301,NC,L]

规则说明

  • RewriteCond %{HTTP_HOST} ^example\.com$ [NC]:限定仅当请求主机为example.com时执行后续规则,NC表示不区分大小写。
  • RewriteRule ^de/(.*)$ http://example.de/$1 [R=301,NC,L]:
    • ^de/(.*)$:匹配以de/开头的路径,将de/之后的所有内容捕获到变量$1中。
    • http://example.de/$1:把捕获的路径片段拼接到目标域名后完成重定向。
    • R=301:标记为永久重定向,利于搜索引擎收录和浏览器缓存。
    • L:执行完该规则后停止后续Rewrite规则的处理。

验证

将上述规则替换到.htaccess文件后,测试示例URL即可确认是否正常跳转到对应example.de路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:20:27