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

.htaccess重定向:将subdomain.www.domain.com改写为subdomain.domain.com

嘿,这个需求其实挺典型的,我来给你拆解清楚怎么改,还有通用的规则写法:

一、修改现有Rewrite规则的关键部分

你的核心需求是把subdomain.www.domain.com这类域名重定向到subdomain.domain.com,本质是去掉域名中间多余的www.。

假设你现在的Rewrite规则是针对普通带www的域名(比如www.domain.com转domain.com),那你需要调整的是域名捕获的正则表达式部分:

  • 原来的规则可能只匹配开头的www.,现在要匹配[任意子域].www.这种结构,把[任意子域]单独捕获,再拼接成目标域名。

举个Apache的例子,假设你原来的规则是这样的:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

那你需要把RewriteCond里的正则改成能捕获www前面子域的写法,调整后:

# 匹配形如 xxx.www.domain.com 的域名,捕获xxx部分
RewriteCond %{HTTP_HOST} ^(.+)\.www\.domain\.com$ [NC]
RewriteRule ^(.*)$ https://%1.domain.com/$1 [R=301,L]

这里的关键修改就是把原来的^www\.(.*)$换成^(.+)\.www\.domain\.com$,这样就能精准捕获www前面的子域部分,再通过%1调用这个捕获组拼成目标域名。

二、捕获所有子域名的通用Rewrite规则

如果要适配所有可能的子域(包括多级子域,比如a.b.www.domain.com转a.b.domain.com),下面分Apache和Nginx两种主流服务器给你通用规则:

Apache 通用规则

# 先开启Rewrite引擎(如果没开的话)
RewriteEngine On

# 匹配所有包含 .www. 的二级/多级子域,捕获www前面的全部内容
RewriteCond %{HTTP_HOST} ^(.+)\.www\.domain\.com$ [NC]
# 301永久重定向到去掉www的对应域名,L表示这是最后一条规则
RewriteRule ^(.*)$ https://%1.domain.com/$1 [R=301,L]

这里的(.+)会捕获www前面的所有内容(不管是单级还是多级子域),%1就是这个捕获的内容,完美适配所有子域场景。

Nginx 通用规则

你可以单独写一个server块来处理这类请求:

server {
    listen 80;
    listen 443 ssl;
    # 正则匹配所有 xxx.www.domain.com 格式的域名
    server_name ~^(.+)\.www\.domain\.com$;

    # 永久重定向到去掉www的域名,保留原请求路径和参数
    return 301 https://$1.domain.com$request_uri;
}

或者在现有server块里添加判断逻辑:

if ($host ~* ^(.+)\.www\.domain\.com$) {
    return 301 https://$1.domain.com$request_uri;
}

额外注意点

  • 优先用301永久重定向,这对SEO友好,浏览器也会缓存重定向规则;测试阶段可以先用302临时重定向,确认没问题再改成301。
  • 要确保你的服务器已经配置了目标域名(比如subdomain.domain.com)的站点,不然重定向后会出现404错误。
  • 如果是HTTPS请求,一定要保证目标域名有有效的SSL证书,否则会触发浏览器安全警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:57:11