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

Htaccess重定向循环问题:子站域名别名跳转配置需求

解决子站重定向统一地址的方案

我来帮你搞定这个重定向的问题!根据你的场景——要把parent.org/child(含所有子路径)和child.org(含所有子路径)的请求都统一跳转到child.org/child开头的地址,我整理了几种主流服务器环境下的配置方案,还特意规避了循环重定向的坑:

Nginx 配置方案

如果你的服务器用的是Nginx,分两个server块配置即可:

1. 处理parent.org的重定向

在parent.org对应的server块里添加规则,把所有parent.org/child开头的请求跳转到child.org的对应路径:

server {
    listen 80;
    listen [::]:80;
    server_name parent.org;

    # 匹配parent.org/child开头的所有请求,永久重定向到child.org对应路径
    location ~ ^/child(/.*)?$ {
        return 301 https://child.org$request_uri;
    }

    # 这里保留parent.org原有其他配置...
}

2. 处理child.org的重定向

在child.org对应的server块里,只对非/child开头的请求做重定向,避免循环:

server {
    listen 80;
    listen [::]:80;
    server_name child.org;

    # 匹配根路径或非/child开头的路径,重定向到/child开头的地址
    location ~ ^/(?!child)(.*)?$ {
        set $redirect_path $1;
        # 处理根路径的情况,避免出现双斜杠
        if ($redirect_path = "") {
            set $redirect_path "/";
        }
        return 301 https://child.org/child$redirect_path;
    }

    # 正常处理/child开头的请求,指向你的子站内容
    location /child {
        root /path/to/your/child/site; # 替换成子站实际目录
        # 如果是反向代理后端服务,就用proxy_pass http://localhost:xxxx;
        try_files $uri $uri/ =404;
    }
}

Apache 配置方案

如果用Apache,可以通过.htaccess文件配置:

1. parent.org的重定向规则

在parent.org根目录的.htaccess里添加:

RewriteEngine On
# 仅匹配parent.org域名下的/child开头请求
RewriteCond %{HTTP_HOST} ^parent\.org$
RewriteRule ^child(/.*)?$ https://child.org%{REQUEST_URI} [R=301,L]

2. child.org的重定向规则

在child.org对应根目录的.htaccess里添加:

RewriteEngine On
# 先处理根路径,直接跳转到/child
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ https://child.org/child [R=301,L]

# 处理非/child开头的其他路径,跳转到/child/对应子路径
RewriteCond %{REQUEST_URI} !^/child/
RewriteCond %{REQUEST_URI} !^/child$
RewriteRule ^(.*)$ https://child.org/child/$1 [R=301,L]

Cloudflare 页面规则方案(无需改服务器配置)

如果你的域名托管在Cloudflare,直接用页面规则就能搞定:

  • 规则1:匹配URL parent.org/child/*,选择「转发URL」→ 301永久重定向,目标URL填 https://child.org/child/$1
  • 规则2:匹配URL child.org(根路径),选择「转发URL」→ 301永久重定向,目标URL填 https://child.org/child
  • 规则3:匹配URL child.org/*,添加例外条件「URL不匹配child.org/child/*」,选择「转发URL」→ 301永久重定向,目标URL填 https://child.org/child/$1

关键注意事项

  • HTTPS适配:如果你的站点用HTTPS,一定要把规则里的http://改成https://,同时确保child.org有有效的SSL证书
  • 避免循环:所有规则都要排除child.org/child开头的请求,否则会出现无限循环重定向
  • 测试验证:可以用curl -I http://parent.org/child/test或者curl -I http://child.org/test命令,查看返回的Location头是否符合预期
  • 缓存清理:如果之前有错误的重定向配置,测试时记得用浏览器隐私模式或者清除缓存,避免旧缓存影响结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:12:40