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

如何用.htaccess实现主域名非www转www、子域名www转非www(不硬编码域名)

使用.htaccess实现无硬编码域名的跳转规则

以下是满足需求的.htaccess规则,全程不硬编码具体域名,适配所有主域名和子域名场景:

# 启用重写引擎
RewriteEngine On

# 规则1:将子域名的www形式(如www.en.domain.com)重定向至非www形式(en.domain.com)
RewriteCond %{HTTP_HOST} ^www\.(.*\..*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# 规则2:将主域名的非www形式(如domain.com)重定向至www形式(www.domain.com)
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

规则细节解释:

  • 启用重写引擎:RewriteEngine On 是Apache mod_rewrite模块生效的基础,必须放在规则最开头。
  • 子域名www转非www:
    • RewriteCond %{HTTP_HOST} ^www\.(.*\..*)$ [NC]:匹配所有以www.开头且包含至少两个点的多级子域名,%1会捕获www.之后的完整子域名部分(比如en.domain.com),[NC]表示不区分大小写。
    • RewriteRule ^(.*)$ https://%1/$1 [R=301,L]:将请求重定向到捕获到的子域名,保留原请求路径;R=301是永久重定向(利于搜索引擎优化),L表示匹配后不再执行后续规则。
  • 主域名非www转www:
    • RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]:仅匹配只有一个点的主域名(比如domain.com),避免干扰多级子域名。
    • RewriteCond %{HTTP_HOST} !^www\. [NC]:排除已经是www开头的主域名,防止出现循环跳转。
    • RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]:在原主域名前添加www.前缀,保留原请求路径,同样使用301永久重定向。

实操注意事项:

  • 确保服务器已启用mod_rewrite模块,Apache服务器通常需要在httpd.conf中开启该模块。
  • 测试阶段可以先用R=302临时重定向,确认规则生效后再切换为R=301永久重定向。
  • 规则顺序不能颠倒,必须先处理子域名跳转,否则主域名规则可能错误匹配子域名场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:42:17