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

如何将example.com重定向至site.example.com并保留example.com/login路径?

当然可以实现这个需求!而且不同的服务器环境都有成熟、高效的配置方案,我给你整理了几种最常用的最优实现方式,你可以根据自己的服务器类型来选择:

1. Nginx 配置方案(最主流的选择之一)

Nginx的配置逻辑很清晰:先匹配需要排除的/login路径,让它正常处理;剩下的所有请求统一重定向到site.example.com。

你只需要在Nginx的站点配置文件(比如/etc/nginx/sites-available/example.com)里添加以下规则:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    # 匹配/login路径(包括/login下的子路径,比如/login/verify),正常处理
    location ^~ /login {
        # 这里填写你原来处理login请求的逻辑,比如proxy_pass或者root指向静态文件等
        # 示例:proxy_pass http://your-backend;
        try_files $uri $uri/ =404;
    }

    # 其他所有请求301永久重定向到site.example.com
    location / {
        return 301 $scheme://site.example.com$request_uri;
    }
}
  • 用^~可以确保/login的匹配优先级更高,不会被其他正则规则干扰;
  • 301是永久重定向,对SEO更友好,如果只是临时需求可以改成302临时重定向;
  • $request_uri会保留原请求的路径和参数,比如example.com/about?foo=bar会被重定向到site.example.com/about?foo=bar。
2. Apache 配置方案

如果你的服务器是Apache,需要确保启用了mod_rewrite模块,然后通过.htaccess或者主配置文件来实现:

在网站根目录的.htaccess文件中添加以下规则:

RewriteEngine On

# 排除/login路径(包括子路径),直接跳过重定向
RewriteRule ^login - [L]

# 其他所有请求301重定向到site.example.com
RewriteRule ^(.*)$ https://site.example.com/$1 [R=301,L]
  • [L]表示“Last”,匹配到这条规则后就停止后续规则的执行,确保/login路径不会被重定向;
  • 同样用301永久重定向,保留原请求的完整路径。
3. CDN 层面实现(比如Cloudflare)

如果你用了CDN服务,可以直接在CDN的页面规则里配置,不用修改服务器配置,更方便:

  • 第一条规则:匹配example.com/login*,设置为**“不重定向”**,优先级设为最高;
  • 第二条规则:匹配example.com/*,设置为**“转发URL”**,目标URL填site.example.com/$1,并选择301永久重定向。

这种方式的好处是不用动服务器配置,而且CDN层面的重定向响应速度更快。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:57:55