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

Apache服务器下子域名重定向至文章URL的.htaccess配置问题

解决Apache子域名重定向到对应文章URL的问题

咱先拆解下你当前.htaccess配置里的几个错误,正是这些问题导致了访问失败:

原配置的核心问题

  • HTTP_HOST变量格式错误:%{HTTP_HOST}只存储主机名(比如mypost.example.com),不包含https://协议前缀,你写的匹配规则完全抓不到想要的子域名部分。
  • 捕获组逻辑颠倒:你想捕获的是子域名的前缀(比如mypost),但原规则里的^(.*)$是捕获请求的URI路径,根本不是主机名的内容。
  • 多余的符号和空格:配置里的引号和URL中的空格会让Apache解析出错,直接导致站点无法访问。
  • 错误的标志使用:[P]是用于反向代理的标志,而你需要的是外部重定向,应该用[R]系列标志。

正确的.htaccess配置

首先要确保前提:你的DNS已经配置了通配符记录(*.example.com指向服务器IP),且服务器有通配符SSL证书(否则子域名会出现SSL错误)。然后替换成以下配置:

RewriteEngine On

# 匹配非主域名的子域名,捕获前缀到%1
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.example\.com$ [NC]
# 排除www和裸域名(避免误重定向主站)
RewriteCond %1 !^(www|example)$ [NC]
# 重定向到对应的文章URL,301为永久重定向(利于SEO)
RewriteRule ^(.*)$ https://www.example.com/sub/%1 [R=301,L]

配置说明

  • 第一条RewriteCond:匹配所有以xxx.example.com格式存在的子域名,把子域名前缀(比如mypost)捕获到%1变量中,[NC]表示不区分大小写。
  • 第二条RewriteCond:排除www.example.com和example.com,避免主站被错误重定向;如果不需要排除裸域名,可以删掉这一行。
  • RewriteRule:不管子域名下请求的具体路径是什么,都重定向到https://www.example.com/sub/加上捕获到的子域名前缀,[R=301]表示永久重定向,[L]表示执行完这条规则后停止后续Rewrite处理。

额外注意事项

  • 测试阶段可以把[R=301]改成[R=302](临时重定向),避免浏览器缓存永久重定向规则影响测试。
  • 修改配置后,一定要清空浏览器缓存再测试,否则可能会看到旧的缓存结果。
  • 确认Apache已经启用了mod_rewrite模块(大部分主机默认启用,如果没启用需要联系主机商或自己在配置中开启)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:34:42