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

Apache2 Rewrite规则问题:跨HOST的URI重定向失效排查

解决域名路径跨站重定向问题

需求背景

已完成CNAME配置且功能正常,需实现两类永久重定向(适配谷歌学术索引更新):

  • 将 todigra.org/index.php/dl 及后续路径重定向至 dl.digra.org/index.php/dl
  • 将 dl.digra.org/index.php/todigra 及后续路径重定向至 todigra.org/index.php/todigra

正确Rewrite规则配置

将以下规则添加到站点根目录的 .htaccess 文件(或对应VirtualHost配置块)中:

# 开启重写引擎
RewriteEngine On

# 规则1:todigra.org下的dl路径跳转至dl.digra.org
RewriteCond %{HTTP_HOST} ^todigra\.org$ [NC]
RewriteRule ^index\.php/dl(.*)$ https://dl.digra.org/index.php/dl$1 [R=301,L]

# 规则2:dl.digra.org下的todigra路径跳转至todigra.org
RewriteCond %{HTTP_HOST} ^dl\.digra\.org$ [NC]
RewriteRule ^index\.php/todigra(.*)$ https://todigra.org/index.php/todigra$1 [R=301,L]

规则细节说明

  • RewriteCond %{HTTP_HOST} ^todigra\.org$ [NC]:精准匹配请求主机头为todigra.org,[NC]表示忽略大小写
  • ^index\.php/dl(.*)$:捕获以index.php/dl开头的完整路径,(.*)保留后续所有路径内容
  • [R=301,L]:R=301标记永久重定向(引导搜索引擎更新索引记录),L表示匹配后停止执行后续规则

旧规则失效常见原因

若之前的后两条规则无作用,大概率是以下问题导致:

  • 规则顺序错误:这两条定向规则需放在其他通用Rewrite规则之前,避免被提前匹配拦截
  • 正则语法错误:未转义路径中的.(正则中.代表任意字符),或未用(.*)捕获后续路径
  • 未启用重写引擎:缺少RewriteEngine On语句,导致所有规则不生效
  • 主机头匹配不精准:未加^和$导致匹配到无关子域名,或未加[NC]导致大小写不兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:04