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

通配符子域名下.htaccess主域与子域文件指向配置求助

解决方案

先修正现有规则里的错误,再添加子域名路由逻辑,最终的.htaccess配置如下:

RewriteEngine on

# 强制HTTPS:主域名跳转到www版本,子域名保留原主机名
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^test\.com$ [NC]
RewriteRule ^(.*)$ https://www.test.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.test\.com$ [NC]
RewriteRule ^(.*)$ https://%1.test.com/$1 [L,R=301]

# 移动端路径跳转
RedirectMatch 301 ^/m/$ https://www.test.com/
RedirectMatch 301 ^/mobile/$ https://www.test.com/

# 子域名路由:匹配非www的两位字母子域名,指向对应语言文件
RewriteCond %{HTTP_HOST} ^(?!www\.)([a-z]{2})\.test\.com$ [NC]
RewriteRule ^$ %1.php [L]

# 数字路径路由
RewriteRule ^([0-9]+)$ index.php?query=$1 [NC,L]

# 搜索页面路由
RewriteRule ^search\.html$ search.php [NC,L]

关键调整说明

  • 修正原规则里的拼写错误:HTTPS_HOST改为HTTP_HOST,否则HTTPS跳转规则会失效
  • 拆分HTTPS跳转逻辑:避免把子域名强制跳转到www主域名,子域名会直接跳转至自身的HTTPS版本
  • 子域名匹配规则:^(?!www\.)([a-z]{2})\.test\.com$专门匹配两位字母的子域名(如ru、de),根路径请求会直接指向对应的ru.php/de.php;如果需要子路径也映射到该文件,可把RewriteRule ^$ %1.php [L]改成RewriteRule ^(.*)$ %1.php/$1 [L]
  • 完善原有数字路由规则:添加$避免部分匹配,加上L标记保证规则执行顺序正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:53:17